5

カスタム リストビューとカスタム アダプターがあります。このリストビューの行をクリックすると、TextView のテキストが白に設定され、この行の背景が黒に設定されます。

すべて問題ありませんが、行をクリックすると、他の行の背景色も黒に設定され、上下にスクロールするとすべてが台無しになります。

カスタム アダプタの getView()

public View getView(final int position, View convertView, ViewGroup parent) {  
    final ListItem holder;
    View vi=convertView;

    if(vi==null){
        vi = inflater.inflate(R.layout.list, null);
        holder = new ListItem();
        holder.nametext= (TextView) vi.findViewById(R.id.name);
        vi.setTag(holder);

    }else{
        holder = (ListItem) vi.getTag();
    }

    holder.nametext.setText(""+item.name);
    return vi;
}

主な活動中:

CustomAdapter listadapter = new CustomAdapter(context, R.layout.list, items);
list.setAdapter(listadapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg){
               TextView v = (TextView) view.findViewById(R.id.name);
               view.setBackgroundColor(Color.BLACK);
               v.setTextColor(Color.WHITE);
        }

    });

getView() に setOnItemClickListener を入れようとしましたが、うまくいきませんでした..

何か助けはありますか?ありがとう。

4

2 に答える 2

0

これは、このように"android:cacheColorHint"プロパティを @nullに設定することで回避できる、リスト ビューのキャッシュ カラー ヒントのデフォルトの効果です。

<ListView
        android:id="@+id/lstEventComment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"      
        android:cacheColorHint="@null"
/>
于 2013-08-24T04:52:12.333 に答える