2015-07-10 147 views
1

我使用這個代碼如何更改背景只有所選項目的顏色在一個ListView

 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parentView, View view, int position, long id) { 

      selectid = position; 

      for (int j = 0; j < parentView.getChildCount(); j++) 
       parentView.getChildAt(j).setBackgroundResource(R.color.listitem_normal); 

      // change the background color of the selected element 
      view.setBackgroundResource(R.color.listitem_pressed); 

     } 
    }); 

,但如果有很多項目,如果我選擇一個項目,並開始翻轉下來,我看到它選擇和其他物品大約每5個。如果所有項目都放在屏幕上(無需滾動),一切正常。

你能解釋一下如何解決它嗎?我嘗試了很多選擇。

+0

試試我的代碼。可能會幫助你。應該選擇 –

回答

7

你可以保持跟蹤當前所選元素的位置:

OnItemClickListener listViewOnItemClick = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) { 
      mSelectedItem = position; 
      mAdapter.notifyDataSetChanged(); 
    } 
}; 

,並覆蓋適配器的getView方法:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final View view = View.inflate(context, R.layout.item_list, null); 

    if (position == mSelectedItem) { 
     // set your color 
    } 

    return view; 
} 
+1

作爲正確的。 –

+0

我照它寫的,現在我只是選擇第一項是,我不能選擇其他的 –

+0

理解,轉身,謝謝 –

相關問題