taskadapter为空时更新片段

时间:2016-06-03 09:23:07

标签: android fragment adapter

我有一个包含一个具有适配器的listView的片段,在适配器类中,有一些按钮可以从适配器中删除对象,然后适配器调用notifyDataSetChanged();如果适配器是空的,我希望片段知道并做一些事情,有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

你可以在片段xml文件中设置textview。就像这样:

<?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){
   .....
}