2013-01-09 75 views
2

這真是一個奇怪的問題,我遇到了幾個谷歌搜索,返回徒勞。如何在滾動時保留listview選定/單擊的項目顏色?

嗯,我有一個列表視圖,其中選擇的項目顏色應該改變,而用戶點擊該項目。

這篇文章幫助我改變列表視圖選擇的項目顏色。現在,我可以在單擊項目時更改顏色。但是,如果我滾動列表視圖顏色跳出選擇。

https://stackoverflow.com/a/12080202/1657093

如果選擇一個項目說,例如在第一行的ListView項的最後一個項目也被選中,而滾動項目顏色上移動,而我從來沒有選擇的項目保留。

這裏是列表視圖

<ListView 
    android:id="@+id/loadedlist" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/horizontalScroll" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/Title" 
    android:layout_toLeftOf="@+id/sidepanel" 
    android:scrollingCache="false"> 

    </ListView> 

我使用陣列適配器來填充列表視圖

ringlist.setAdapter(新ArrayAdapter
(這一點,android.R.layout.simple_list_item_1,環) );

和使用列表視圖的上點擊的方法來設置顏色,

ringlist.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int pos,long id) { 
     // TODO Auto-generated method stub 
    try{ 
    String con; 
     String s = ringlist.getItemAtPosition(pos).toString(); 
     con = s.toLowerCase(); 
    String selectedFromList = con; 
      int resId = getResources().getIdentifier(selectedFromList, "raw",  
      "com.example.android"); 

      } 
    if (row != null) { 
      row.setBackgroundColor(Color.BLACK); 
      } 

      row = view; 
       view.setBackgroundColor(Color.GREEN); 
       } 

     } 

     }); 

上面的代碼做的工作,但在滾動列表中不順心的事

請指點。

回答

0

這是Android中Listview的常見問題。 當我們在向下滾動或向上滾動後使用Listview Item中的複選框/單選按鈕時,選定的位置在某些不同的地方會發生變化。 到目前爲止,唯一的解決方案是,我們需要維護一個數組列表中的選定位置(或任何你感到舒適的結構)。 而當你向上/向下滾動列表視圖時,getview會被調用。 因此,在您的getview()中編寫代碼以使從arraylist中選擇複選框項目。 也不要在getview中爲convertview使用if-else條件。

0

將您在onItemClick()方法中的集合或數組中存儲的點擊/選定位置存儲。編寫代碼以顯示使用存儲位置的適配器的getview()方法中的單擊/選定項目。

相關問題