随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
实现在AdapterView(ListView、GridView等)没有数据时自动绑定空视图展示。
核心代码只有一句:调用AdapterView的setEmptyView方法,其内部会根据ListAdapter的isEmpty方法来控制显示自身还是空视图,非常简单。
这样就省去了我们自己去写逻辑控制ListView和空布局的显示切换。
下面给一个简单示例:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View emptyView=findViewById(R.id.main_layout_empty);
ListView listView=(ListView) findViewById(R.id.main_listview);
listView.setEmptyView(emptyView);
String[] arr={"text1","text2","text3","text4","text5",};//改变数据的有无自动变化视图
ArrayAdapter<String > adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arr);
listView.setAdapter(adapter);
}
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/main_layout_empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="没有数据" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="刷新" />
</LinearLayout>
<ListView
android:id="@+id/main_listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>