2

全て。notifyDataSetChanged() を使用すると、リストビューの表示順序が変更されます。

このような

  • 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

setEditText で実際にリストの内容を変更しているように見えるので、問題を探し始めるのに適した場所かもしれません。

于 2011-02-23T19:20:24.173 に答える
0

private String[] mData;を使用する代わりに考えます。、次を使用する必要があります。

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

私の場合、それは機能し、データを変更しません。これから問題を解決してくれることを願っています。

于 2011-02-26T07:49:38.333 に答える