2

notifyDataSetChanged()に関して多くの問題があることがわかりました。私はそれらの多くを調べましたが、どの解決策もうまくいきませんでした。

ArrayListを使用してリストを設定しており、ArrayListが更新された後、notifyDataSetChanged()を実行しました。新しいリストが前のリストに追加されます。

最初のリストがa、bで、新しいリストがa、b、cであるとします。私が最後に得るのはa、b、a、b、cです。そして、これを更新するたびに、新しいリストでこれが再び発生します。

invalidate()、adapter clear()、refreshDrawableState()などの他のものを試しましたが、何も機能しませんでした。

前もって感謝します。

簡略化されたコードを次に示します。MainActivityを変更するとActivityがListActivityに拡張され、.xmlファイルのコードを変更した後でもプログラムがクラッシュすることに注意してください。

public class MainActivity extends Activity 
{
ArrayList<String> names = new ArrayList<String>();
ArrayAdapter arrayAdapter = null;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    ListView lv1 = (ListView) findViewById(R.id.listview);
    arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names);
    lv1.setAdapter(arrayAdapter);

}

//code here to edit the ArrayList names.

public void onResume() 
{
    super.onResume();  // Always call the superclass method first

    //the activity need to be updated everytime it resumes.
    arrayAdapter.notifyDataSetChanged();

}
}
4

1 に答える 1

0

配列リストを適切に更新していないようです。更新後にアレイ リストの内容をログに記録してみてください。

于 2012-08-23T09:39:05.810 に答える