没有 listView 时显示 imageView、button 和 textView
Show imageView,button and textView when no listView
在ActivityA中,有一个listView
。如果列表大小等于 0,将显示 ImageView
、textView
和 button
,否则将显示。
但即使 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);
}
基础适配器
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>
好吧,我认为您的部分问题是为视图可见性设置 INVISIBLE
而不是 GONE
。我相信您必须设置 GONE
而不是 INVISIBLE
。
不同之处在于 INVISIBLE 会使视图不可见但布局保持不变。因此,该按钮所在的屏幕上只会有一个空的 space。但是 GONE
将允许父视图表现得好像该视图不存在一样。这意味着视图的布局参数将不再受到尊重,我相信这正是您想要的。
INVISIBLE = make the view invisible but continues to respect its layout params
GONE = makes the view invisible and disregards the layout params of that view.
此外,请确保您的“搜索”列表在您创建适配器时已填充。将它从 OnCreate 函数中删除并放入 activity.
的 onResume 函数中可能是明智的
在ActivityA中,有一个listView
。如果列表大小等于 0,将显示 ImageView
、textView
和 button
,否则将显示。
但即使 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);
}
基础适配器
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>
好吧,我认为您的部分问题是为视图可见性设置 INVISIBLE
而不是 GONE
。我相信您必须设置 GONE
而不是 INVISIBLE
。
不同之处在于 INVISIBLE 会使视图不可见但布局保持不变。因此,该按钮所在的屏幕上只会有一个空的 space。但是 GONE
将允许父视图表现得好像该视图不存在一样。这意味着视图的布局参数将不再受到尊重,我相信这正是您想要的。
INVISIBLE = make the view invisible but continues to respect its layout params
GONE = makes the view invisible and disregards the layout params of that view.
此外,请确保您的“搜索”列表在您创建适配器时已填充。将它从 OnCreate 函数中删除并放入 activity.
的 onResume 函数中可能是明智的