我使用两个TextView创建了简单的ListView - 一个用于标题(始终可见),一个用于注释(不总是可见)。问题是滚动后设置可见性,并且在多次滚动后,每个注释都可见。
以下是我设置可见性的适配器的一部分:
public View getView(int position, View view, ViewGroup parent)
{
ViewHolder holder = new ViewHolder();
if (view == null)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.stop, null);
TextView title = (TextView) view.findViewById(R.id.title);
TextView request = (TextView) view.findViewById(R.id.request);
holder.title = title;
holder.request = request;
view.setTag(holder);
}
else
{
holder = (ViewHolder) view.getTag();
}
Stop stop = list.get(position);
holder.title.setText(stop.title());
if (stop.request() == true)
holder.request.setVisibility(View.VISIBLE);
return view;
}
...和列表元素视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
/>
<TextView
android:id="@+id/request"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="(note)"
android:textColor="#888888"
android:textSize="14dp"
android:visibility="gone"
/>
</LinearLayout>
如果在我的对象(Stop
)request()
方法返回true,请注意TextView应该是可见的,但是一些具有false值的TextView可见,并且例如10个滚动每个隐藏的TextView都可见。如何解决?
答案 0 :(得分:0)
如果您对转换视图以及回收工作的方法进行更多研究,您将了解您的情况发生了什么。
为简短易行的解决方案,请执行
else
holder.request.setVisibility(View.GONE);