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