【问题标题】:update fragment when taskadapter is emptytaskadapter 为空时更新片段
【发布时间】:2016-06-03 09:23:06
【问题描述】:

我有一个片段,它有一个带有适配器的 listView,在适配器类中,有一些按钮可以从适配器中删除对象,然后适配器调用 notifyDataSetChanged();如果适配器为空我希望片段知道并做某事,有没有简单的方法可以做到这一点?

【问题讨论】:

  • 你想在适配器为空时显示信息?
  • 是的,我想说列表是空的
  • 吐司还是文本视图等?
  • 一旦最后一个列表视图项目被删除,我想显示一个文本视图,说明没有要显示的项目

标签: android fragment adapter


【解决方案1】:

你可以在你的片段 xml 文件中设置一个文本视图。像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
    android:id="@+id/tV_empty"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerVertical="true"
    android:text="No item yet"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ListView
    android:id="@+id/lv_notebook"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="@android:color/transparent" />

</RelativeLayout>

适配器为空时,可以使用textView.setVisible(VISIBLE)。(可以搜索名称)。适配器有项目时,可以使用textView.setVisible(...)

好吧,你可以在你的片段中这样做:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    // set up listview
    if(mDataList.size()==0){
        mListView.setVisibility(View.GONE);
        mTextView.setVisibility(View.VISIBLE);
    }else{
        YourAdapter mAdapter = new YourAdapter(mDataList...)
        mListView.setAdapter(mAdapter);
        mListView.setVisibility(View.VISIBLE);
        mTextView.setVisibility(View.GONE);
    }

    return rootView;
}

public void deleteItem(int position){
    Data item = mDataList.get(position);
    mDataList.remove(item);
    if(mDataList.size()==0){
        mTextView.setVisibility(View.INVISIBLE);
    }else{
        mAdapter.notifyDataChanged();
    }
}
public void addItem(Data item){
   .....
}

【讨论】:

  • 我知道如何将 textview 设置为可见,我要问的是片段如何知道 textview 何时为空
  • 每次使用notifyDatachanged时,可以查看数据的大小,当size为0时,可以设置textview可见
  • 但是我在适配器中输入 notifyDataCHanged 并且 textview 在片段中
  • 你使用adapter.notifydatachange吗?适配器也在你的片段中输入,因为列表视图是在你的片段中输入的
  • 我只在adapter中使用notifydatachanged,从不在fragment中,如何知道adapter中的数据发生变化时在fragment中?
猜你喜欢
  • 2021-11-11
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
相关资源
最近更新 更多