Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListView中显示数据库项时,它';每次我换标签,它都会成倍增加_Android_Sqlite - Fatal编程技术网

Android 在ListView中显示数据库项时,它';每次我换标签,它都会成倍增加

Android 在ListView中显示数据库项时,它';每次我换标签,它都会成倍增加,android,sqlite,Android,Sqlite,我有3个选项卡,其中一个选项卡中有一个列表视图,它从SQLite数据库获取项目 问题是,当我切换到其他选项卡,并返回到此选项卡时,我的ListView会显示数据库项2次,并且每次更改选项卡时都会成倍增加 下面是我的代码,用于显示ListView: public class MyActivity extends Fragment { private ListView mListView; private DatabaseHandler db; List my = new Arra

我有3个选项卡,其中一个选项卡中有一个
列表视图
,它从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);
  }
公共类MyActivity扩展了片段
{
私有列表视图;
专用数据库处理程序数据库;
List my=new ArrayList();
Mylistapter madapter;
//.....
//...
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
我的项目一;
LinearLayout mylayout=(LinearLayout)充气器。充气(R.layout.my_布局,容器,false);
List l=db.getAllMyItem();
而(!l.isEmpty())
{
i=l.get(0);
l、 移除(0);
my.add(新的MyList(i.getName(),0));
}
mListView=(ListView)mylayout.findviewbyd(R.id.list);
madapter=新的MyListAdapter(getActivity(),my);
mListView.setAdapter(madapter);
}

我知道是我的
while
循环一次又一次地从数据库中获取结果,但我该怎么做才能只显示一次从数据库中检索到的结果,即使在更改选项卡并返回到该
片段
选项卡后也是如此。

您从不清空列表,因此在
while
循环之前添加以下内容:

my.clear();
另外,我将如下更改循环,因为您不需要从
l
列表中删除项目

for (MyItem i : l) {
     my.add(new MyList(i.getName(),0));
}