2

全部。当我使用 notifyDataSetChanged() 时,listview 的显示顺序将会改变。

像这样

  • 3
  • 2
  • 1

    创建当前活动的时间。但是当我更改数据时。这将是

  • 1
  • 2
  • 3

我不想改变订单,我不明白为什么会这样。

这是我的适配器类中的一段代码

    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();
}})
4

3 回答 3

2

如果不查看适配器的完整源代码,很难判断发生了什么,但这听起来像是 getView() 实现中的一个问题。每次调用 getView() 时,您都必须重新绑定所有数据。

于 2011-02-26T07:18:36.643 回答
0

我认为不要使用private String[] mData; , 你应该使用以下,

private ArrayList mData = new ArrayList();
mData.add(item);

就我而言,它可以工作并且不会更改数据,我希望您能从中解决您的问题。

于 2011-02-26T07:49:38.333 回答
0

在我看来,在 setEditText 中您实际上是在更改列表内容,因此这可能是开始寻找问题的好地方。

于 2011-02-23T19:20:24.173 回答