没有listView时显示imageView,button和textView

时间:2016-01-29 15:47:28

标签: android listview count baseadapter

在活动A中,有一个listView。如果列表大小等于0,将显示ImageViewtextViewbutton,否则将显示。

When no listView

但即使istView大小不等于0,它们仍会显示。

 List<SearchResults> search = new ArrayList();
 BaseAdapter adapter;

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView2);
        image = (ImageView) findViewById(R.id.imageView);
        addInfo = (Button) findViewById(R.id.button2);
        displayText = (TextView) findViewById(R.id.NoData);
        adapter=new BaseAdapter(getApplication(),search);

        getData(name, month);  // retrieve data from MySQL
        adapter.getCount();
        if (search.size() == 0) {
            image.setVisibility(View.VISIBLE);
            addInfo.setVisibility(View.VISIBLE);
            displayText.setVisibility(View.VISIBLE);
            Log.e("SA", "null");
        } else {
            image.setVisibility(View.INVISIBLE);
            addInfo.setVisibility(View.INVISIBLE);
            displayText.setVisibility(View.INVISIBLE);
        }

BaseAdapter

public class BaseAdapter extends ArrayAdapter<SearchResults> {

    Context context;
    List<SearchResults> search;

    public BaseAdapter(Context context, List<SearchResults> search) {
        super(context, R.layout.retrieve_data, search);
        this.context = context;
        this.search = search;
    }

     public int getCount() {
        return search.size();
    }

日志显示null虽然有列表。

activity_a

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <ImageView

        android:src="@mipmap/background_image"
        android:paddingTop="50dp"
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:scaleType="fitXY"
        android:id="@+id/imageView"
        android:paddingLeft="20dp"
        android:layout_centerHorizontal="true"></ImageView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="No Data"
        android:paddingBottom="20dp"
        android:textSize="15dp"
        android:textColor="@color/btn_login"
        android:gravity="center"
        android:id="@+id/NoData"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/imageView"/>

    <Button
        android:layout_width="250dp"
        android:layout_height="60dp"
        android:text="Add Data"
        android:id="@+id/button2"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/NoData"/>



    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView2"
            android:layout_weight="1"
            android:layout_alignParentLeft="true" />



    </RelativeLayout>


</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

我认为您的问题的一部分是为{1}}设置视图可见性而不是INVISIBLE。我相信您必须设置GONE而不是GONE。 区别是INVISIBLE将使视图不可见但保持布局相同。因此,按钮应该在屏幕上只有一个空白区域。但是INVISIBLE将允许父视图就像视图不在那里一样。意味着视图的布局参数将不再受到尊重,我认为这是你想要的。

  

INVISIBLE =使视图不可见但继续尊重其布局参数

     

GONE =使视图不可见,并忽略该视图的布局参数。

此外,请确保在创建适配器时填充“搜索”列表。从OnCreate函数和活动的onResume函数中删除它可能是明智的。