0

私は3つのタブを持っており、私のタブの1ListViewつには、SQLiteデータベースからアイテムをフェッチしているがあります。

問題は、他のタブに変更してこのタブに戻るとListView、データベースアイテムが2回表示され、タブを変更するたびに増加することです。

これがタブ表示の私のコードですListView

public class MyActivity extends Fragment
{
   private ListView mListView;
   private DatabaseHandler db;
   List my = new ArrayList();
   MyListAdapter madapter ;

   //.....

   //...
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
   {
       MyItem i;
       LinearLayout mylayout = (LinearLayout) inflater.inflate(R.layout.my_layout, container, false);

       List<MyItem> l = db.getAllMyItem();

       while(!l.isEmpty() )
       {
           i = l.get(0);
           l.remove(0);
           my.add(new MyList(i.getName(),0));
       }

       mListView = (ListView) mylayout.findViewById(R.id.list);
       madapter = new MyListAdapter(getActivity(), my);

       mListView.setAdapter(madapter);
  }

whileデータベースから何度も結果をフェッチしているのは私のループですが、タブを変更してこのFragmentタブに戻った後でも、データベースから取得した結果を1回だけ表示するにはどうすればよいですか。

4

1 に答える 1

1

リストを空にすることは決してないので、whileループの前にこれを追加します。

my.clear();

また、リストからアイテムを削除する必要がないため、ループを次のように変更しますl

for (MyItem i : l) {
     my.add(new MyList(i.getName(),0));
}
于 2012-07-18T13:57:19.667 に答える