在活动A中,有一个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);
}
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>
答案 0 :(得分:1)
我认为您的问题的一部分是为{1}}设置视图可见性而不是INVISIBLE
。我相信您必须设置GONE
而不是GONE
。
区别是INVISIBLE将使视图不可见但保持布局相同。因此,按钮应该在屏幕上只有一个空白区域。但是INVISIBLE
将允许父视图就像视图不在那里一样。意味着视图的布局参数将不再受到尊重,我认为这是你想要的。
INVISIBLE =使视图不可见但继续尊重其布局参数
GONE =使视图不可见,并忽略该视图的布局参数。
此外,请确保在创建适配器时填充“搜索”列表。从OnCreate函数和活动的onResume函数中删除它可能是明智的。