0

SMS会話リストを表示するためにSherlockListFragment(ListFragmentと同じ)を使用しています

これがコードです

   public static class TitlesFragment extends SherlockListFragment 
{
     static ConversationAdapter adapter;
     static List<String>    msgList;
     static Activity        activity;
     static ListView listView;

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

        DataGetters dataGetters = new DataGetters();
        activity = getActivity();
        msgList = dataGetters.getCONVERSATIONS(activity.getApplicationContext());

       adapter = new ConversationAdapter(activity, msgList);
       setListAdapter(adapter);

}

上記のコードは、現在のすべてのSMS会話を次のように出力します。

ここに画像の説明を入力してください

adapter.notifyDataSetChanged();を呼び出して、以下のコードからアダプターを更新しています。新しいSMSを受信すると魔女が呼び出されます

public class ReceiverClass extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {

    Thread.sleep(2000);

return null;
}

@Override
protected void onPostExecute(String result) {


      TitlesFragment.adapter.notifyDataSetChanged();

}

ただし、休眠コードは、次のように新しいリストアイテムの位置を追加するのではなく、既存のリストビューアイテムを上書きします。

ここに画像の説明を入力してください

アクティビティが再作成されると、必要なものが得られますが、その場合に限ります。例: ここに画像の説明を入力してください

4

2 に答える 2

1

ListAdapterがアタッチされているリストを誤って変更している可能性があります。

于 2012-12-19T05:38:41.023 に答える
0

だから問題は私が新しい位置でadpaterリストを変更しないことではありませんでした

追加する必要のあるコードは次のとおりです

  msgList= dataGetters.getCONVERSATIONS(activity.getApplicationContext());

  ConversationAdapter.msgList = msgList;

  TitlesFragment.adapter.notifyDataSetChanged();

MarkNguyenに感謝します

于 2012-12-19T06:04:37.500 に答える