0

10 個の画像と名前を含むリストがあります。次のボタンをクリックすると、名前付きの 10 枚の画像が表示されますが、前の 10 枚の画像も表示されます (合計 20 枚の画像)。

現在の10枚の画像だけを表示し、前の10枚の画像をListViewから削除したいです。これどうやってするの?

を試してみましたがmyArrayList.clear(); arrayList.remove();、まだ 20 枚の画像を取得しています (10 枚の現在の画像と 10 枚の前の画像)。adapter.clearListView();listView.removeAllView();

サンプルコードで解決策を提案してください。

私のコードは

public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder view;  
    LayoutInflater inflator = activity.getLayoutInflater();  

  if(convertView==null)  
   {  
       view = new ViewHolder();  
       convertView = inflator.inflate(R.layout.image_detail_view, null);
       view.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1);  
       view.imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1); 
       convertView.setTag(view);  
    }  
  else  
    {  

      view = (ViewHolder) convertView.getTag();  
    }  

       listImage.clear();
       listText.clear();
       notifySetDataChange();
  return convertView;  
}

そして、私は別のクラスでリストビューを作成し、上記のコードでアダプターを呼び出しています..

listViewもクリアしようとしました..

画像と名前はサーバーからのものであり、本質的に動的です..

4

2 に答える 2

0

アダプターのみの対応となります。アダプターのデータをリセットし、adapter.notifyDataSetChanged() を呼び出します。

UDP:

getView() は、行のビューが必要になるたびにシステムによって呼び出されます。したがって、データを含むリストを変更して、このメソッドで notifyDataSetChanged() を呼び出さないでください。

class CustomAdapter extends ArrayAdapter {

    private List<YourItem> items;

    public void setItems(List<YourItem> newItems) {
        items = newItems;
        notifyDataSetChanged();
    }

    public View getView(View convertView, int position, ...) {
        if (convertView == null) {
            // your code
        } else {
            // your code
        }

        YourItem item = items.get(position);

        // set image to convertView

        return convertView;
    }
}

そのため、ListView を更新するたびに、新しいアイテムで setData() を呼び出します。

他に質問はありますか?

于 2013-03-09T07:19:46.590 に答える
0

getView メソッドでリスト データをクリアすることはできません。listAdapter からクリアする必要があります。その後、正しく動作します。

于 2013-03-09T07:57:02.527 に答える