我正在为adapter
使用自定义列表CheckBox
和ListActivity
。当我第一次向适配器提供列表时,它会显示项目从下到上的位置。意味着位置0是最下面的列表项,N是最顶层的项。当我选择最顶层的元素时,它给我位置N,我从列表中删除N索引的项目,然后调用notifyDataSetChanged
。问题是它删除了索引0处的项目。第二个问题是在notifyDataSetChanged之后,现在最顶层的元素显示位置0,最底部的项目显示N位置。问题是什么以及如何解决?我是Android的新手,所以请相应帮助。
我发帖子删除代码:
private OnClickListener deleteItemsListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ArrayList<Integer> positions = emails.getCheckedPositions();
for(int p : positions)
{
messges.remove(p);
}
emails.notifyDataSetChanged();
emails.clearList();
emailListView.invalidate();
deleteItems.setText("");
deleteItems.setVisibility(Button.INVISIBLE);
}
};
哪里是ArrayList<Object>
。下面的代码初始化列表和适配器。
mmessges = new ArrayList<Object>();
emails = new GMailAdapter(this, messges);
emailListView.setAdapter(emails);
提前谢谢。
答案 0 :(得分:0)
这样做:
ArrayList<Integer> positions = emails.getCheckedPosiotions();
int[] positionArray = new int[position.size()];
for (int i = 0; i < positionArray; i++) {
positionArray[i]= mmessges.size() - positions.get(i);
}
for (int p = 0; p < posiotionArray.length(); p++) {
messges.remove(p);
}
emails.notifyDataSetChanged();