Android ListView项目按钮禁用
我有一个用于listView的自定义baseadapter。现在我在每个listView项上都有了按钮。我需要在单击它们时禁用按钮。但当我点击其中一个按钮时,列表中的多个按钮被禁用。我正在附上密码Android ListView项目按钮禁用,android,listview,android-listview,Android,Listview,Android Listview,我有一个用于listView的自定义baseadapter。现在我在每个listView项上都有了按钮。我需要在单击它们时禁用按钮。但当我点击其中一个按钮时,列表中的多个按钮被禁用。我正在附上密码 @Override public View getView(int arg0, View convertView, ViewGroup arg2) { // TODO Auto-generated method stub final int k = arg0; if (conv
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
final int k = arg0;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_view_element, null);
}
TextView name = (TextView)convertView.findViewById(R.id.textView1);
name.setText(arrayList.get(arg0).getName());
TextView phone = (TextView)convertView.findViewById(R.id.textView2);
phone.setText(arrayList.get(arg0).getPhoneNum());
Button request = (Button)convertView.findViewById(R.id.button1);
request.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Update the local database of Request table
databaseHelper.insertRequestTable(new Person(arrayList.get(k).getName(), arrayList.get(k).getPhoneNum()));
((Button)arg0).setEnabled(false);
}
});
return convertView;
}
请帮忙
Button request = (Button)convertView.findViewById(R.id.button1);
// this refers to all button in the list view you
// viewholder holds reference of bojects
public static class ViewHolder {
TextView name;
TextView phone;
Button request;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
// TODO Auto-generated method stub
final int k = arg0;
if (convertView == null || convertView.getTag() == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_view_element, null);
holder = new ViewHolder();
// save the references in the holder
holder.name = (TextView)convertView.findViewById(R.id.textView1);
holder.phone = (TextView)convertView.findViewById(R.id.textView2);
holder.request = (Button)convertView.findViewById(R.id.button1);
// save this references to view so the you can get it back to set some thing
convertView.setTag(holder);
} else {
// get the reference back
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(arrayList.get(arg0).getName());
holder.phone.setText(arrayList.get(arg0).getPhoneNum());
// this will refer to button you want not all
holder.request.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Update the local database of Request table
databaseHelper.insertRequestTable(new Person(arrayList.get(k).getName(), arrayList.get(k).getPhoneNum()));
((Button)arg0).setEnabled(false);
}
});
return convertView;
}
GitHub项目:有很多类似的问题,比如:,还有很多其他问题。尝试查看它。try request.setEnabled(false)我在可扩展列表视图中遇到了类似的问题,而不是在正常情况下listview@Rod_Algonquin已经尝试过了,但遇到了相同的问题。请注意,您必须在该位置重新启用按钮,一旦将其设置为false,按钮将无法单击。因此,仅代码答案通常不好。请对您所做的更改以及如何提供解决方案进行解释。@VikasRathod问题仍然存在。现在发生了一件新的事情,listView元素正在发生变化;现在我有点忙,我会发布你完整的android项目。