gpt4 book ai didi

android - 为一行中的按钮自定义 arrayadapter 和 onclicklistener

转载 作者:行者123 更新时间:2023-12-05 00:07:25 27 4
gpt4 key购买 nike

我有一个自定义的数组适配器,我想在它的每一行中为一个按钮添加一个 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;
}
}

最佳答案

检查代码所做的一些更改

包 com.example.dontpanic;

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.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);
}
});
row.setTag(holder);

} else {
holder = (WeatherHolder) row.getTag();
}

holder.b.setTag(holder);
String name1 = data.get(position);
holder.name.setText(name1);

return row;
}

static class WeatherHolder {

TextView name;
ImageButton b;
}
}

将您的点击监听器放在 if 条件内,并在 if else 条件外设置标签

关于android - 为一行中的按钮自定义 arrayadapter 和 onclicklistener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21161959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com