如果没有结果,Android将替换Listview与图像

时间:2016-03-03 20:59:30

标签: android xml listview

我正在尝试实现一个函数,如果填充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

                        }

3 个答案:

答案 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);
    }