我有一個自定義arrayadapter,我想爲其每行中的按鈕添加一個onclicklistener,當我單擊按鈕我想要更改圖像資源時,所有內容除了當我點擊一個按鈕時,圖像會改變,但另一行中另一個按鈕的圖像也會改變。謝謝你的幫助 ! 這裏是我的代碼:自定義arrayadapter和onclicklistener爲一行中的按鈕
public class Coursadapter extends ArrayAdapter<String>{
Context context;
int layoutResourceId;
ArrayList<String> data = null;
WeatherHolder holder;
public Coursadapter(Context context, int layoutResourceId, ArrayList<String> data) {
// super(context, layoutResourceId, data, coeff);
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new WeatherHolder();
holder.name = (TextView)row.findViewById(R.id.item_cours_name);
holder.b=(ImageButton) row.findViewById(R.id.button);
holder.b.setTag(holder);
row.setTag(holder);
}
else
{
holder = (WeatherHolder)row.getTag();
}
holder.b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
WeatherHolder w = (WeatherHolder) v.getTag();
w.b.setImageResource(R.drawable.butgreen);
}
});
String name1 = data.get(position);
holder.name.setText(name1);
return row;
}
static class WeatherHolder
{
TextView name;
ImageButton b;
}
}
嘗試移動'holder.b.setTag(holder);'在else部分下面。你的問題是因爲lsitview回收視圖。 – Raghunandan
您是否得到了解決方案。由於 – Vinay