片段中的Listview不显示所有条目

时间:2014-03-31 14:25:00

标签: android listview

我有两个片段,一个用于肖像,一个用于横向。当应用程序是纵向时,ListView会按预期填充服务器中的所有内容,但是当我转动手机格局时,ListView会填充,但不会覆盖服务器中的所有内容(它似乎缺少最后一个)每次5或6个条目)。我已经调试了代码,并且可以看到我的消息中的所有内容都是从我的服务器返回的。

我的代码如下:

public final Handler myCallBack = new Handler() {
@Override
public void handleMessage(Message msg) {
try {
  lv = (ListView) view.findViewById(R.id.listView1);
  if (msg.obj == "No Response") {
     TextView tv2 = (TextView) view.findViewById(R.id.textView2);
     tv2.setText("No Response. Please check your internet connection");
     tv2.setVisibility(View.VISIBLE);
     lv.setVisibility(View.INVISIBLE);
 } else {
   dataList = (ArrayList<Beer>) msg.obj;
   lv.setVisibility(View.VISIBLE);
   ArrayAdapter<Beer> arrayAdapter = new ArrayAdapter<Beer>(
   getActivity(), android.R.layout.simple_list_item_1, (List<Beer>) msg.obj);
   lv.setAdapter(arrayAdapter);
 }
}catch (Exception ex) {
}
}
};

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

问题很可能是您将数据传递给处理程序的方式:

提取的dataList仅仅是对ArrayList<Beer>的引用,它仍然可以更改。

您需要传递copy数组数据和消息,为此您需要Beer工具Parcelable

然后将ArrayList<Beer>putParcelableArrayList放在Bundle中,并在发送给处理程序的UI线程之前将Bundle设置为Message:

Bundle bundle = new Bundle();
bundle.putParcelableArrayList("myBeers", dataList/*your ArrayList*/);
msg.setData(bundle);

然后使用

在处理程序中提取它
ArrayList<Beer> dataList = bundle.getParcelableArrayList("myBeers");

我相信这会解决您的问题。如果您需要更多详细信息,请与我们联系。