2013-07-08 150 views
1

我的列表視圖包含200多個項目。在列表視圖的每一行中,都有一個Button。我想根據位置更改按鈕背景。我也可以更改它,但問題是在滾動listview後,圖像被分配給其他按鈕。如果我正在更改按鈕文本,一切都很好,但是如果改變按鈕背景,這個奇怪的問題來了。如何根據位置更改Listview按鈕的背景圖像?

下面是我到目前爲止已經試過,

public class MyAdapter extends BaseAdapter { 

    private Activity activity; 
    private String[] data; 
    private static LayoutInflater inflater=null; 
    public ImageLoader imageLoader; 

    public MyAdapter(Activity a, String[] d) { 
     activity = a; 
     data=d; 
     inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     imageLoader=new ImageLoader(activity.getApplicationContext()); 
    } 

    public int getCount() { 
     return data.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     if(convertView==null) 
      vi = inflater.inflate(R.layout.item, null); 

     Button button=(Button)vi.findViewById(R.id.text);; 

     if (position==2 || position==3) { 
      button.setText("Invited"); 
      } 
     else if (position==5 || position==8) { 
     button.setBackgroundResource(R.drawable.graph); 
      } 
     else { 
     text.setText("Invite"); 
     } 

     return vi; 
    } 
} 

任何幫助將不勝感激。

+0

每個答案看起來是正確的,所以也許你可以標記一個所接受?這是一個常見問題,但很容易失敗。 – ninehundredt

回答

0

使用在getview方法奇數偶數邏輯.............

公共視圖getView(INT位置,查看convertView,的ViewGroup父){

if(convertView==null) 
    vi = inflater.inflate(R.layout.item, null); 

if (position % 2 == 0) { 
    button.setBackgroundResource(R.drawable.list_1); 
}else { 
    button.setBackgroundResource(R.drawable.list_2); 
} 

return vi; 

}

0

ListView回收的意見,你必須在getView()方法狀態重置什麼意思呢是這樣做這樣的:

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    if(convertView==null) 
     vi = inflater.inflate(R.layout.item, null); 

    Button button=(Button)vi.findViewById(R.id.text);; 
    button.setBackgroundResource(0); // reset the color again 
    if (position==2 || position==3) { 
     button.setText("Invited"); 
    } else if (position==5 || position==8) { 
     button.setBackgroundResource(R.drawable.graph); 
    } else { 
     text.setText("Invite"); 
    } 

    return vi; 
} 
+0

感謝您的答覆。我會盡力而爲,並會盡快更新。 –

1

你有一個簡單的問題,我的朋友,這是事業的Android適配器實現所致重新使用這些組件,一旦它離開屏幕,這就需要一個已經改變了背景的按鈕,所以你必須設置你的邏輯,使它回到默認的背景。 這是缺少完整文檔讀取的常見錯誤。 這裏是一個類似的問題:Setting color of ListView items

相關問題