Android:按下按钮后按空{List}

时间:2016-10-20 09:29:57

标签: android listview baseadapter

我有一个活动,显示不同的片段。片段的布局通常是listView。单击listView中的项目时,将显示下一个片段。片段有一个SwipeRefreshLayout。

问题是当按下按钮后,listView有时是空的。 在调试中我可以看到数据仍然在哪里,但listView不会总是重新绘制它。在listView为空的情况下,listView的刷新也不起作用。数据重新加载,但不可见。

我有一个适配器,我调用notifyDataSetChanged。我也尝试重置列表,然后调用adapter.notifyDataSetChanged,但它不起作用。

片段的onCreate():

   public void onCreate(Bundle savedInstanceState){
     super.onCreate(savedInstanceState);
     // creates the adapter for the different fragments
     adapter = createListViewAdapter();
     setListAdapter(adapter);
   }

片段的onViewCreated():

    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在不同的片段中实施。

问题不定期发生,任何想法是什么问题?

1 个答案:

答案 0 :(得分:0)

有一种名为

的方法
@Override
protected void setUserVisibleHint(boolean isUserVisible){
}

只需覆盖该方法,然后检查片段是否对用户可见,并像notifyDatasetChanged()一样进行必要的操作。

nulll check非常重要。

由于