ListFragment - 覆盖适配器数据更改列表位置但未添加

时间:2012-12-19 05:27:05

标签: android list listview android-fragments fragment

我正在使用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);

}

上面的代码打印所有当前的短信对话 像这样:

enter image description here

我通过调用adapter.notifyDataSetChanged()来刷新下面代码中的适配器;收到新的短信时会调用女巫

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

}

但是,暂停代码会覆盖现有的列表视图项目,这些项目需要添加新的列表项位置,如下所示:

enter image description here

当我重新创建i活动时,我得到了我想要的东西,但只有这样:示例: enter image description here

2 个答案:

答案 0 :(得分:1)

您很可能错误地修改了ListAdapter所附加的List。

答案 1 :(得分:0)

所以问题不在于我没有用新位置修改适配器列表

以下是需要添加的代码

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

  ConversationAdapter.msgList = msgList;

  TitlesFragment.adapter.notifyDataSetChanged();

感谢Mark Nguyen