如何识别和删除ListView的位置

时间:2012-08-13 12:14:36

标签: android android-arrayadapter

我扩展了ArrayAdapter,如下图所示 enter image description here

public class UrlArrayAdapter extends ArrayAdapter<UrlItem> {
    private LayoutInflater inflater;
    public UrlArrayAdapter(Context context, List<UrlItem> urlLists) {
        super(context, R.layout.database_table_list, R.id.editLinearLayout1,urlLists);
        inflater = LayoutInflater.from(context);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        UrlItem urlItem = (UrlItem) this.getItem(position);
        CheckBox checkBox = null;
        TextView textView = null;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.database_table_item, null);
            textView = (TextView) convertView.findViewById(R.id.editText1);
            checkBox = (CheckBox) convertView.findViewById(R.id.checkBox1);
            convertView.setTag(urlItem);
            checkBox.setChecked(urlItem.getUse());
            textView.setText(urlItem.getUrl());
            textView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                }
            });
        } else {
        }
        return convertView;
    }
}

如何识别和删除我按下的位置? setOnClickListener() - 不起作用 - 需要很长时间才能点击

2 个答案:

答案 0 :(得分:0)

首先,在您的getView方法中,您的代码似乎不正确:无论您是否使用转换后的视图,都需要设置值。代码应该是这样的:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    UrlItem urlItem = (UrlItem) this.getItem(position);
    CheckBox checkBox = null;
    TextView textView = null;
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.database_table_item, null);
    }

    textView = (TextView) convertView.findViewById(R.id.editText1);
    checkBox = (CheckBox) convertView.findViewById(R.id.checkBox1);
    convertView.setTag(urlItem);
    checkBox.setChecked(urlItem.getUse());
    textView.setText(urlItem.getUrl());
}

然后,要检测单个项目的点击次数,请不要对项目使用onClickListener。相反,请在setOnItemClickListener上使用ListView。你会得到这样的东西:

final UrlArrayAdapter adapter = new UrlArrayAdapter(this, items);
ListView list = this.findViewById(R.id.my_list);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        //deal here with removing the item at position _position_
        //from your adapter, then notify the list view that the data has changed
        adapter.notifyDataSetChanged();
    }
});

答案 1 :(得分:0)

我认为这会对你有帮助。

list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
            long arg3) {
        // REMOVE DATA FROM YOUR LIST ACCORDING TO POSITION.
        adapter.notifyDataSetChanged();
    }
});

如果你遇到任何问题,那么你可以问。