所有。 当我使用notifyDataSetChanged()时,listview显示顺序将会改变。
像这样1
创建当前活动时。但是当我改变数据时。它将是
我不希望订单发生变化,我也不明白为什么会发生这种情况。
这是我的适配器类
中的一段代码 public static class ItemAdapter extends BaseAdapter {
private String[] mData;
private LayoutInflater mInflater;
// I called this method to change data
public void setEditText(int position, final String item) {
mData[position] = item;
notifyDataSetChanged();
}
}
我在某个对话框中更改数据
builder = new AlertDialog.Builder(ct);
builder.setTitle(R.string.pickStatus)
.setView(edBuffer)
.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog, int id) {
// TODO Auto-generated method stub
canPop = true;
final String tmp = edBuffer.getText().toString();
KbonezLog.e(String.format( "set into key %d", key));
//use mData key to set value
setEditText(key, tmp);
dialog.dismiss();
}})
答案 0 :(得分:1)
如果没有看到适配器的完整源代码,很难说出发生了什么,但这听起来像是getView()实现中的一个问题。每次调用getView()时,必须重新绑定所有数据。
答案 1 :(得分:1)
答案 2 :(得分:0)
在我看来,在setEditText中,您实际上是在更改列表内容,因此这可能是开始寻找问题的好地方。
答案 3 :(得分:0)
我认为不应使用私有String [] mData; ,而应使用以下内容,
private ArrayList mData = new ArrayList();
mData.add(item);
在我的情况下,它有效并且不会更改数据,我希望您能从中解决问题。