2016-04-21 78 views
0

我改變了我的CustomAdapter中rowView的背景顏色,當我向下滾動列表並備份視圖時刷新和背景消失,我知道這是因爲listView的回收機制,但我不能讓它停止。listView在滾動時回收視圖

這是我的getView功能:

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     final Holder holder = new Holder(); 
     final View rowView; 
     rowView = inflater.inflate(R.layout.program_list, null); 
     holder.tv = (TextView) rowView.findViewById(R.id.textView1); 
     holder.img = (ImageView) rowView.findViewById(R.id.imageView1); 
     holder.tv.setText(result[position]); 
     holder.img.setImageResource(imageId[position]); 
     rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (position != 0) 
        rowView.setBackgroundColor(Color.rgb(70, 190, 200)); 
      } 
     }); 
     return rowView; 
    } 

我想要做的是:陣列中的所有位置已經被按下內部存儲,然後色大家他們的每一次。我看到很多其他解決方案,但我不完全瞭解它們。

回答

1

我認爲你應該使用不同的方法,並在你點擊的物品的位置存儲某處。然後,當您創建視圖檢查位置是否存儲並更改背景。 希望它可以幫助你

+0

好方法。謝謝:)我只是有問題。 – DAVIDBALAS1

0

做一個布爾數組,並設置爲你點擊的每個項目爲真。

boolean[] isSelected; 

然後在你的getView方法代碼中就像這樣。

rowView.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (position != 0){ 
       rowView.setBackgroundColor(Color.rgb(70, 190, 200)); 
       isselected[position] = true;    } 
      } 
    }); 
if(isSelected[position]){ 
    rowView.setBackgroundColor(Color.rgb(70, 190, 200)); 
} 
+0

我認爲你必須在開始時設置布爾數組長度,所以Set會更好。 – DAVIDBALAS1

+0

是@ DAVIDBALAS1 –