理解できない大きな問題があります。独自のアダプターを使用してカスタム ListView を取得しました。ListView の各行には 2 つの TextView があります。1 つはタイトルで、2 つ目は開始時に非表示です。このアイテムに何か新しいものがあると見えてくるでしょう。
私のアダプターでは、すべての行にタイトルを設定し、2 番目の 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>