我在我的listview中每一个item有两个显示事项
因为是一个记事本app,所以每个item第一行显示conetnt,第二行显示时间
则,排列下来每一行都有两个textview,但是有的时候我的某一项content并没有对应的时间,所以我并不需要第二个textview
所以我在我适配器的getview方法中做出了调整。
下面是我的item布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title"
android:textSize="25sp"/>
<TextView
android:id="@+id/tv_timeOrPosition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_content"
android:text="Content"
android:textSize="20sp"/>
</RelativeLayout>
下面是我的getview方法
public View getView(int position, View convertView, ViewGroup parent) {//如果view未被实例化过,缓存池中没有对应的缓存
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item, null);
}
/**
* 找到item布局文件中对应的控件
*/
TextView timeOrPositionTextView = (TextView) convertView.findViewById(R.id.tv_timeOrPosition);
TextView contentTextView = (TextView) convertView.findViewById(R.id.tv_content);
//获取相应索引的ItemBean对象
Event event = mList.get(position);
/**
* 设置控件的对应属性值
*/
if (event.time!=0) {
timeOrPositionTextView.setText(event.time);
} else if(event.position!=null){
timeOrPositionTextView.setText(event.position);
}
else{
timeOrPositionTextView.setVisibility(View.GONE);
}
contentTextView.setText(event.content);
return convertView;
}
因为我不清楚view有哪些方法,所以我使用了 setVisibility的方法达到目的
这个方法有3个属性
setVisibility(View.VISIBLE);显示;
setVisibility(View.invisible); 不显示会显示黑背景条;但这个View仍然会占用在xml文件中所分配的布局空间,不重新layout
setVisibility(View.GONE)不显示,但这个View在ViewGroup中不保留位置,会重新layout,不再占用空间,那后面的view就会取代他的位置,