Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView项目按钮禁用_Android_Listview_Android Listview - Fatal编程技术网

Android 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

我有一个用于listView的自定义baseadapter。现在我在每个listView项上都有了按钮。我需要在单击它们时禁用按钮。但当我点击其中一个按钮时,列表中的多个按钮被禁用。我正在附上密码

@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项目。