2013-07-08 115 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

相关问题