我正在尝试实现一个函数,如果填充listview的光标为空,将显示一个图像而不是listview。
我已经尝试过放入图片,但它位于列表视图的上方或下方,并且会破坏布局
我目前正在使用listFragment但我的问题是定位图像。我如何放置它以使图像在被调用之前是“不可见的”?
XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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:id="@+id/coordinatorLayout">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/filterButton"
app:backgroundTint="@color/floatingButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:clickable="true"
android:src="@drawable/ic_filter"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="63dp"
android:layout_marginRight="16dp" />
</android.support.design.widget.CoordinatorLayout>
代码
if(cursor!=null && cursor.getCount()>0)
{
//call to populate the image?
Toast.makeText(getActivity(), "Sorry no match, please refine search", Toast.LENGTH_SHORT).show();
}
else
{
//display list as normal
}
答案 0 :(得分:2)
与@yUdoDis答案类似,但我建议使用ViewSwitcher。
您的layout.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewSwitcher
android:id="@android:id/empty"
android:visibility="gone"
android:layout_weight="0"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/yourpicture"
android:visibility="gone"
android:id="@+id/imageview"/>
</ViewSwitcher>
<android.support.design.widget.FloatingActionButton
android:id="@+id/filterButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_gravity="bottom|right"
android:layout_marginBottom="63dp"
android:layout_marginRight="16dp"
android:clickable="true"
android:src="@drawable/ic_filter"
app:backgroundTint="@color/floatingButton" />
</android.support.design.widget.CoordinatorLayout>
在您的活动代码中:
ViewSwitcher switcher = (ViewSwitcher) findViewById(android.R.id.empty);
if(cursor!=null && cursor.getCount()>0){
switcher.setDisplayedChild(1);
}else{
switcher.setDisplayedChild(0);
}
答案 1 :(得分:1)
如果没有数据,您可以将ListView可见性设置为GONE,将图像视图设置为VISIBLE。有数据时则相反。
或者,您可以使用列表适配器的setEmptyView API。
答案 2 :(得分:1)
将imageview添加到xml中 将其可见性设定为已消失。
光标中的 - 如果空集imageview.setVisibility(View.VISIBLE)
和listView.setVisibility(View.GONE)
在快乐的情况下做相反的事情。
不要忘记事先用它们的id初始化变量imageView和listView。
你的xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/yourpicture"
android:visibility="gone"
android:id="@+id/imageview"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/filterButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_gravity="bottom|right"
android:layout_marginBottom="63dp"
android:layout_marginRight="16dp"
android:clickable="true"
android:src="@drawable/ic_filter"
app:backgroundTint="@color/floatingButton" />
</android.support.design.widget.CoordinatorLayout>
您的代码
ImageView imageView = (ImageView) findViewById(R.id.imageview);
ListView listView = (ListView) findViewById(R.id.listview);
if(cursor!=null && cursor.getCount()>0){
imageView.setVisibility(View.VISIBLE);
listView.setVisibility(View.GONE);
}else{
imageView.setVisibility(View.GONE);
listView.setVisibility(View.VISIBLE);
}