0

我扩展了ArrayAdapter,画了下图 在此处输入图像描述

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() - 不起作用 - 账号点击时间长

4

2 回答 2

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();
    }
});
于 2012-08-13T12:28:08.143 回答
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();
    }
});

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

于 2012-08-13T12:30:03.210 回答