0
删除项目我有包含若干文本,删除按钮等各行的列表视图。 当删除按钮被按下时,该行必须被删除。Android的问题列表视图从
我使用的是基础适配器和有哪些的项目将显示一个全局列表。
请参考下面
public class JobCartListAdapter extends BaseAdapter {
protected LayoutInflater mInflater;
public JobCartListAdapter(Context mContext) {
super();
this.mContext = mContext;
mInflater = LayoutInflater.from(mContext);
}
Context mContext;
@Override
public int getCount() {
// TODO Auto-generated method stub
return JobsManager.JobsCartList.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.job_cart_row, null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.title);
holder.delete = (ImageButton)convertView.findViewById(R.id.delete);
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("Remove from" , "" + position);
JobsManager.JobsCartList.remove(position) ;
notifyDataSetChanged();
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text1.setText(JobsManager.JobsCartList.get(position).getTitle());
return convertView;
}
static class ViewHolder {
TextView text1;
ImageButton delete;
}
}
问题我面对我的adpater代码:
当我按下DELET的firstime,在列表中的位置是正确的,该项目是删除列表刷新得到
当我在刷新列表中再次行上点击,传递给getview对应的位置是不正确的。所以它导致索引超出界限的异常,因为该位置被用作列表的索引。我检查了我的清单,并在添加和删除时正确更新了清单。 它与列表适配器的问题。与notifystatechanged的号召,单击某一行时显示的列表刷新后,返回的行现在的位置是不正确的。
请帮助
u能PLS解释这个“适配器”实际上的含义。我没有看到为基础适配器 – png 2011-12-23 11:34:30
对不起preetha我的错误其实你converview得到重用和删除情况onclicklistener任何这样的功能是抱着旧的位置,所以做的标记删除,比如'delete.setTag(位置+“”)按钮一件事设置位置;'&中点击收听获得按钮该标签&也别删除getview如果converview不为空,然后从中提取converView&设置标签删除按钮再次 – 2011-12-23 11:59:53
是,这个问题是由于重用converview。我改变了这一点,以免重复使用,因为这似乎更容易。非常感谢。 – png 2011-12-23 12:22:54