0

私のアプリには、独自の ListItemStyle (独自の XML) を持つ Listview があります。ListView に項目を追加する私のコードは次のようになります。

Schueler s[] = new Schueler[]
{
     new Schueler("vName", "nName", new Date()).setNoten(new Klausur(50, 4, 3)),
     new Schueler("vName", "nName", new Date()).setNoten(new Klausur(100, 1, 3))
}

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{
    View row = convertView;

    if(row == null)
    {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, null);
    }

    Schueler s = data[position];

    if(s != null)
    {
        TextView vName = (TextView) row.findViewById(R.id.vName);
        TextView nName = (TextView) row.findViewById(R.id.nName);
        LinearLayout scroll = (LinearLayout) row.findViewById(R.id.notenScroll);

        HorizontalScrollView hsv = (HorizontalScrollView)              row.findViewById(R.id.horizontalScrollView1);

        vName.setText(s.getvName());
        nName.setText(s.getnName());

        for(int i = 0; i < s.getNoten().size(); i++)
        {
            LayoutInflater factory = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View klausur = factory.inflate(R.layout.klausur_item, null);

            TextView pkt  = (TextView) klausur.findViewById(R.id.pkt);
            TextView note = (TextView) klausur.findViewById(R.id.note);
            TextView gew  = (TextView) klausur.findViewById(R.id.gew);

            pkt.setText(String.valueOf(s.getNoten().get(i).getPunkte()));
            note.setText(String.valueOf(s.getNoten().get(i).getNote()));
            gew.setText(String.valueOf(s.getNoten().get(i).getGewichtung()));

            scroll.addView(klausur);
        }
    }

    return row;
}

レイアウトはすべてうまく機能しますが、一部の項目が L​​istView に何度も追加されるという問題があります。現在は次のようになっています。

ここに画像の説明を入力

コードの何が問題になっていますか?

4

1 に答える 1

1

ビューはリストビューで再利用されます。ここで解決策を参照してください: Android ListView アダプターは更新されません

于 2013-05-06T06:30:16.993 に答える