我试图使用自定义列表视图在每一行中使用delete图像按钮来创建一个包含标题、描述和其他数据的列表。
当我单击第10行中的ImageButton时,ListView中的第5行将被删除!

我的适配器:
public static class ViewHolder {
TextView favorites_title;
TextView favorites_description;
TextView favorites_date;
ImageButton favorites_btn_delete ;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
convertView = inflater.inflate(R.layout.favorites_list_row_layout, null);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.favorites_title = (TextView) convertView.findViewById(R.id.favorites_title);
holder.favorites_description = (TextView) convertView.findViewById(R.id.favorites_description);
holder.favorites_date = (TextView) convertView.findViewById(R.id.favorites_date);
holder.favorites_btn_delete = (ImageButton)convertView.findViewById(R.id.favorites_btn_delete);
/************ Set holder with LayoutInflater ************/
convertView.setTag( holder );
holder.favorites_btn_delete.setTag(position);
}
else
holder=(ViewHolder)convertView.getTag();
holder.favorites_btn_delete.getTag();
NewsItem newsItem = (NewsItem) listData.get(position);
holder.favorites_title.setText(newsItem.getHeadline());
holder.favorites_description.setText(newsItem.getDescription());
holder.favorites_date.setText(newsItem.getDate());
holder.favorites_btn_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Integer index = (Integer) v.getTag();
int i = index.intValue();
Log.e("Position", String.valueOf(i));
// listData.remove(i);
// notifyDataSetChanged();
}
});发布于 2014-01-21 07:26:12
将holder.favorites_btn_delete.setTag(position);移到if else之外,否则在Button中新的position值将永远不会设置为标记,当convertView不是null时,旧值将保持为标记。
发布于 2014-01-21 07:34:17
holder.favorites_btn_delete.setOnClickListener(this);
在getview方法之外
public void onClick(View v)
{
// TODO Auto-generated method stub
Integer index = (Integer) v.getTag();
int i = index.intValue();
Log.e("Position", String.valueOf(i));
listData.remove(i);
notifyDataSetChanged();
}发布于 2014-01-21 08:32:12
使用这个code..it会帮你..。
应用onItem单击“图像侦听器”按钮
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
listData.remove(positon);
notifyDataSetChanged();
}把这个应用到你的活动中。
https://stackoverflow.com/questions/21251710
复制相似问题