2013-05-27 46 views
0

我使用適配器進行編程以進行列表視圖編程,我希望它能夠在用戶觸摸列表視圖元素時保持突出顯示。我成功地使用下面的代碼。但是由於android爲了平滑的性能而回收佈局,當我點擊第1行時,第11,21,31行也被突出顯示。然後,如果向下滾動,行1不再被選中,但行4,14,24等被突出顯示。這是我使用的代碼ListView Highlight Issue

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), R.layout.row, collection);    
onelist.setAdapter(arrayAdapter); 
onelist.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    { 
     str1 = (String)onelist.getItemAtPosition(position); 
     str1 = str1.toLowerCase(); 
     Toast.makeText(context, str1 + " clicked in Fragment " + fragmentNo, Toast.LENGTH_LONG).show(); 

     if(lastColored != null) 
     { 
      lastColored.setBackgroundColor(Color.TRANSPARENT); 
      lastColored.invalidate(); 
     } 
     lastColored = v; 
     v.setBackgroundColor(Color.rgb(51, 181, 229)); 

    }; 
}); 

回答

0

怎麼樣使用在活動列表<>或[]數組記錄哪些項目應該是亮點,並設置項目在getview()中突出顯示。

0

您可以對屬性爲android:state_activated的ListView行使用選擇器。最近我剛剛爲前幾天創建了一個演示示例。你可以download並從我的github檢查出來。

0

將您的背景資源設置爲您的適配器類getView()方法。由於Pawel Cala告訴使用該選擇器的視圖。

0

也許,你應該記錄哪些項目應該高。並記住要清除,因爲轉換視圖。