各位社区大家好,
我的这个适配器带有 2 个 button
和 2 个 textview
。
@Override
public View getView(int position, View view, ViewGroup parent) {
if(view == null) {
holder = new Holder();
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.my_adapter, null);
holder.result = (TextView)view.findViewById(R.id.description);
holder.value = (TextView)view.findViewById(R.id.value);
holder.add = (Button)view.findViewById(R.id.add);
holder.subtract = (Button)view.findViewById(R.id.subtract);
myObject = getItem(position);
holder.result.setText(myObject.result);
holder.value.setText(myObject.value);
view.setTag(holder);
} else {
holder = (Holder)view.getTag();
}
holder.add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
}
});
return view;
}
现在我的问题是:如果我希望当用户按下添加按钮时将 textview
的文本设置为(例如)5,我该怎么做?如果我放入 onCLick
方法
holder.result.setText("My text")
设置最后一个 TextView 的文本,而不是所选行项目的相应 TextView (我禁用了 ListView 上的单击):
@Override
public boolean isEnabled(int position) {
return false;
}
我的问题有解决办法吗?
最佳答案
您应该将代码放在适配器内的 getView
方法中,并记住使用对当前 Button
/TextVeiw
的引用,以便每个Button
将对应于特定的 TextView
附注我在你的代码中发现了一些东西,请检查一下:
@Override
public View getView(int position, View view, ViewGroup parent) {
if(view == null) {
holder = new Holder();
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.my_adapter, null);
holder.result = (TextView)view.findViewById(R.id.description);
holder.value = (TextView)view.findViewById(R.id.value);
holder.add = (Button)view.findViewById(R.id.add);
holder.subtract = (Button)view.findViewById(R.id.subtract);
view.setTag(holder);
} else {
holder = (Holder)view.getTag();
}
myObject = getItem(position);
holder.result.setText(myObject.result);
holder.value.setText(myObject.value);
final TextView tv = holder.result;
holder.add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
tv.setText("bla bla");
}
});
return view;
}
关于java - 将 onClickListener 设置为自定义适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22591793/