我有一个我不明白的大问题。我有我自己的适配器的自定义 ListView。ListView 中的每一行都有两个 TextView - 一个是标题,第二个在开始时是不可见的。当此项目中有新内容时,它将可见。
在我的适配器中,我为每一行设置了标题,并将第二个 TextView 设置为应该可见。当我运行我的应用程序时它很好,但是当我向下和向上滚动列表时,几乎每一行都将不可见的 TextView 更改为可见!
我不知道为什么,但我推测这是与convertView
. 谁能告诉我发生了什么事?
我的适配器:
public class MyListAdapter extends BaseAdapter {
@SuppressWarnings("unused")
private Activity activity;
private ArrayList<String> titles;
private LayoutInflater inflater;
public MyListAdapter (Activity activity, ArrayList<String> titles) {
this.activity = activity;
this.titles = titles;
inflater = (LayoutInflater)activity.getLayoutInflater();
}
public int getCount() {
return titles.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.wpis_list_row, null);
}
TextView title = (TextView)vi.findViewById(R.id.movie_title);
title.setText(titles.get(position));
String name = titles.get(position);
if (name.equals("Name 1") || name.equals("Name 2")
|| name.equals("Name 3")) {
TextView news = (TextView)vi.findViewById(R.id.new_sounds);
news.setVisible(0);
}
return vi;
}
}
和我的单行布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:orientation="horizontal"
android:padding="5dip" >
<TextView
android:id="@+id/movie_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="9"
android:layout_marginLeft="@dimen/list_margin"
android:text="@string/entry"
android:textColor="#FFFFFF"
android:textSize="22sp" />
<TextView
android:id="@+id/new_sounds"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:textColor="#8C1717"
android:textSize="13sp"
android:text="@string/news"
android:visibility="invisible" />
</LinearLayout>