0

クリックされたアイテムの背景を設定しています。

list  = (ListView)findViewById(R.id.listView1);

list.setOnItemClickListener(new OnItemClickListener() {
    @Override
    //ListView parent, View v, int position, long id 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        arg1.setBackgroundColor(Color.RED);
    }
});

問題は、別のアイテムをクリックすると、最後のアイテムと新しいアイテムの色が赤になることです。setOnItemClickListener で最後のアイテム (またはすべて) のカラーレッドを設定することは可能ですか?

どうもありがとうございました。

4

2 に答える 2

0

問題は、前のビューから背景を削除する必要があるため、前のアイテムビューを取得し、そのビューと現在のビューセットの背景から背景を削除する必要があることです。

  1. ループで行う必要があるよりもリストビューをリセットしたい場合。

また

  1. 以前に選択したアイテムの位置をなんとかして保存する必要があります。クリック時間よりも背景を削除できます。前のセットアイテムIEを取得できます。

    public View previousItemView(){ 
        int wantedPosition =  childPosition;
    // This is the same as child #0
    int firstPosition = parent.getFirstVisiblePosition();
    int wantedChild = wantedPosition - firstPosition;
    // Say, first visible position is 8, you want position 10, wantedChild
    // will now be 2
    // So that means your view is child #2 in the ViewGroup:
    if (wantedChild < 0 || wantedChild >= parent.getChildCount()) {
        convertView = null;
      } else {
        // Could also check if wantedPosition is between
        // listView.getFirstVisiblePosition() and
        // listView.getLastVisiblePosition() instead.
        convertView = parent.getChildAt(wantedChild);
      }
      return convertView;
    }
    
于 2013-02-02T09:54:58.157 に答える