我有一个CursorAdapter类的子项,以及一个ListView,每个项目都有两个TextView。一个拿着一个文本,另一个拿着一个数字。
Text来自一个Cursor列,而number来自另一个。如果它等于0,我想隐藏数字。
我的列表项视图是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<TextView
android:background="@drawable/task_count_indicator"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"
android:textColor="@color/white"
android:id="@+id/txtTaskCount" />
<TextView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:ellipsize="marquee"
android:textSize="18sp"
android:layout_alignParentLeft="true"
android:layout_gravity="center_vertical"
android:id="@+id/placeItemName"/>
</RelativeLayout>
我的适配器代码是:
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
return LayoutInflater.from(context).inflate(R.layout.places_list_item, viewGroup, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
int taskCount = cursor.get...// get to know it...
TextView name = (TextView) view.findViewById(R.id.placeItemName);
name.setText(
cursor.getString(
cursor.getColumnIndexOrThrow(...)));
TextView count = (TextView)view.findViewById(R.id.txtTaskCount);
if(taskCount > 0)
count.setText(Integer.toString(taskCount));
else
count.setVisibility(View.GONE);
}
问题在于,有时每个持有数字的视图都被隐藏,或者值不正确(文本内容总是正确的)。我记录taskCount
值 - 它始终是正确的。
我也注意到,如果我评论if语句并将文本总是分配给count
,就像这样:
//if(taskCount > 0)
count.setText(Integer.toString(taskCount));
//else
//count.setVisibility(View.GONE);
问题不在于复制。
答案 0 :(得分:2)
我认为您的问题与taskCound>0
的情况有关
您应该指定count.setVisibility(View.Visible)
,因为视图正在被重用。因此,请务必为每种情况定义您的值。
希望有所帮助