0

我正在创建一个ListViewusing LinearLayout. 我这样做是因为我想将此列表放在ScrollView. 这是我使用LinearLayout.

adapter = new BookingSessionListAdapter(this,null, appDeleg);  
LinearLayout ll = (LinearLayout)this.findViewById(R.id.listLayout);

LinearLayout.LayoutParams layoutParams =
newLinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);

for (int i = 0; i < adapter.getCount(); i++)   
{    
    View item = adapter.getView(i, null, null);    
    ll.addView(item,layoutParams);

}

现在我想刷新列表。我怎样才能做到这一点?

谢谢

4

2 回答 2

1

首先让我告诉你,你正在使用一个真正粗略的实现来显示一个List. 您可能想考虑使用ListView它而不是重新发明轮子。但是,这是一段粗略的代码,它将List根据新的BookingSessionListAdapter.

public void refreshList(BookingSessionListAdapter adapter, LinearLayout ll,
        LinearLayout.LayoutParams layoutParams) {
    ll.removeAllViews();
    for (int i = 0; i < adapter.getCount(); i++) {
        View item = adapter.getView(i, null, null);
        ll.addView(item, layoutParams);

    }
}

这样做是删除Views你的所有内容LinearLayoutViews根据新添加BookingSessionListAdapter

于 2012-11-28T13:22:56.763 回答
0

您必须自己完成工作,这通常与 ListView 一起免费提供。在不了解您的数据(有多少项目等)的情况下很难提出解决方案

一种方法是从 LinearLayout 中删除所有视图并再次添加新视图:

protected void notifyDataChange() {
   ll.removeAllViews();
   for (int i = 0; i < adapter.getCount(); i++) {    
      View item = adapter.getView(i, null, null);    
      ll.addView(item,layoutParams);
   }
}

但是,我会重新考虑您的整个方法,因为 ListView / Adapter 将为您完成所有繁重的工作(内存管理/视图缓存等)。

HTH。

于 2012-11-28T13:20:21.523 回答