我扩展了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() - 不起作用 - 需要很长时间才能点击
答案 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();
}
});
如果你遇到任何问题,那么你可以问。