Android:按下按钮后清空ListView
我有一个活动,它显示了不同的片段。片段的布局通常是listView。当您在listView中单击一个项目时,将显示下一个片段。这些碎片有一个完整的布局 问题是,当按下“后退”按钮时,listView有时是空的。 在debug中,我可以看到数据仍然在哪里,但是listView并不总是重新绘制它。在listView为空的情况下,listView的刷新也不起作用。数据将重新加载,但不可见 我有一个适配器,我调用notifyDataSetChanged。我还尝试重置列表,然后调用adapter.notifyDataSetChanged,但它不起作用 片段的onCreate():Android:按下按钮后清空ListView,android,listview,baseadapter,Android,Listview,Baseadapter,我有一个活动,它显示了不同的片段。片段的布局通常是listView。当您在listView中单击一个项目时,将显示下一个片段。这些碎片有一个完整的布局 问题是,当按下“后退”按钮时,listView有时是空的。 在debug中,我可以看到数据仍然在哪里,但是listView并不总是重新绘制它。在listView为空的情况下,listView的刷新也不起作用。数据将重新加载,但不可见 我有一个适配器,我调用notifyDataSetChanged。我还尝试重置列表,然后调用adapter.noti
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// creates the adapter for the different fragments
adapter = createListViewAdapter();
setListAdapter(adapter);
}
public void onViewCreated(View view, Bundle savedInstanceState){
// reload data when it is not present
this.values = values;
this.filteredValues = values;
adapter.notifyDataSetChanged();
this.setOnRefreshListener(() -> {
// reload data
this.values = values;
this.filteredValues = values;
adapter.notifyDataSetChanged();
)};
super.onViewCreate(view, savedInstanceState);
}
片段的onViewCreated():
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// creates the adapter for the different fragments
adapter = createListViewAdapter();
setListAdapter(adapter);
}
public void onViewCreated(View view, Bundle savedInstanceState){
// reload data when it is not present
this.values = values;
this.filteredValues = values;
adapter.notifyDataSetChanged();
this.setOnRefreshListener(() -> {
// reload data
this.values = values;
this.filteredValues = values;
adapter.notifyDataSetChanged();
)};
super.onViewCreate(view, savedInstanceState);
}
适配器:
public abstract class BaseListViewAdapter extends BaseAdapter implements Filterable{
@Override
public int getCount(){
return filteredValues.size();
}
@Override
public T getItme(int position){
return filteredValues.get(positon);
}
@Override
public long getItemI(int position){
return 0;
}
@Override
public Filter getFilter(){
return BaseListViewFragment.this.getFilter();
}
}
getView()
、getViewTypeCount()
和getItemViewType
在不同的片段中实现
问题发生的不规则,你知道问题是什么吗?有一种方法叫做
@Override
protected void setUserVisibleHint(boolean isUserVisible){
}
只需重写该方法并检查片段是否对用户可见,并执行必要的操作,如notifyDatasetChanged()
空值检查很重要
谢谢有一个方法叫做
@Override
protected void setUserVisibleHint(boolean isUserVisible){
}
只需重写该方法并检查片段是否对用户可见,并执行必要的操作,如notifyDatasetChanged()
空值检查很重要
谢谢覆盖setUserVisibleHint并没有改变什么。ListView有时仍然是空的。片段中有一个片段吗?不,我有一个带有一个片段的活动,单击一个项目我就更改了片段。片段在堆栈中,因此我可以导航回去。确保每次调用oncreateView()和onViewCreated时,您都可以共享完整的代码覆盖setUserVisibleHint没有更改某些内容。ListView有时仍然是空的。片段中有一个片段吗?不,我有一个带有一个片段的活动,单击一个项目我就更改了片段。片段在堆栈中,因此我可以导航回去。确保每次调用oncreateView()和onViewCreated时,您都可以共享完整代码删除SwiperFreshLayout修复了问题。删除SwiperFreshLayout修复了问题。