如何清空android ListView控件的内容

时间:2023-02-02 05:52:34
代码如下:
BaseAdapter  ba=new BaseAdapter()
{

public int getCount() {
// TODO Auto-generated method stub
return count;
}

public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}

public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
LinearLayout ll=new LinearLayout(ShowBusActivity.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
TextView tv1=new TextView(ShowBusActivity.this);
tv1.setText(routeID);
tv1.setTextSize(12);
tv1.setWidth(120);
tv1.setTextColor(Color.WHITE);
ll.addView(tv1);
TextView tv2=new TextView(ShowBusActivity.this);
tv2.setText(tempBus[arg0].strCarId);
tv2.setTextSize(12);
tv2.setWidth(120);
tv2.setTextColor(Color.WHITE);
ll.addView(tv2);
TextView tv3=new TextView(ShowBusActivity.this);
tv3.setText(tempBus[arg0].distance);
tv3.setTextSize(12);
tv3.setWidth(120);
tv3.setTextColor(Color.WHITE);
ll.addView(tv3);
TextView tv4=new TextView(ShowBusActivity.this);
tv4.setText(tempBus[arg0].direction);
tv4.setTextSize(12);
tv4.setWidth(120);
tv4.setTextColor(Color.WHITE);
ll.addView(tv4);
return ll;
}};

lv.setAdapter(ba);
程序中tempBus中的内容是有使用者更新的,我想在每次更新时只显示更新后的内容,可当程序运行时每更新一次就会在ListVeiw中再加一次更新后的内容,未更新前的内容也显示在ListView 上。请高手们帮帮忙,要怎样在更新数据前把ListView中的内容清空?

16 个解决方案

#1


有人在吗?

#2


ListView.removeAllViews();

#3


tempBus更新是吧!你把上一次显的tempBus[]清空不就行了!你那里面的TextView要清除轻型?

#4


引用 3 楼  的回复:
tempBus更新是吧!你把上一次显的tempBus[]清空不就行了!你那里面的TextView要清除轻型?

tempBus是一个类数组,里面存放的是类,修改的是类的成员变量。我是想在要显示ListView的内容是把之前ListView 中的内容清除了。

#5


引用 2 楼  的回复:
ListView.removeAllViews();

加了这个函数报错了。有没有那个函数能判断ListView中是否有数据。

#6


作者应该用适配器来添加ListView的Item比较好吧

给你提供一个思路:
1,当我们要加载item的时候,首先把 list清空

list.clear(); 

适配器

adapter1 =new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); 
listView.setAdapter(adapter1); 

这样加载以后就把Listview 中的数据清空了

2,然后再加载我们想要的数据

list.add("a"); 
list.add("c"); 
list.add("b"); 
list.add("a");
list.add("c");
list.add("b");

适配器

adapter1 =new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); 
listView.setAdapter(adapter1); 
adapter1 =new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter1);

这样就可以清空以前的数据而得到我们更新的结果

#7


感谢楼主以及@Flyinghoneybee这位朋友,解决了困扰我三天的问题
主要是listview刷新的问题,我一直不能清空原先已添加的数据,再次点击只会在原有基础上添加,之前也在其他地方看到过list.clear()这个方法,但当时自以为是地认为是listview没有这个方法,只有removeAllViews和clearFocus等方法,后来看到此帖后,百度了下这个方法,方才明白list指的是list<>集合,所以在我的程序中就是我定义的listData了
原谅我这么多废话,哈哈,新手小白路过

#8


如果item包换imageview呢,每个imageview的图片都是一样的,也用arrayadapter?不用的话,clear能干净么?

#9


把 adapter.clear() 就可以啦

#10


赞一个,困扰我两三天的问题,今天解决了,感谢楼主的贴,已经感谢@Flyinghoneybee 的回答,之前一直以为清空listview的数据,原来清空的是list集合

#11



有一个listAdapter.notifyDataSetChanged()  的方法 你百度一下可以试试 只需要注意adapter中list是同一个对象

#12


listView.setAdapter(null);//实测可清空

#13


太棒了。。。

#14


在刷新前    清除list集合 就行了

#15


引用 12 楼 faqfaq3 的回复:
listView.setAdapter(null);//实测可清空
程序直接崩掉了

#16


list.clean  清空集合里的元素
在调用 adapter。notif。。。  刷新

#1


有人在吗?

#2


ListView.removeAllViews();

#3


tempBus更新是吧!你把上一次显的tempBus[]清空不就行了!你那里面的TextView要清除轻型?

#4


引用 3 楼  的回复:
tempBus更新是吧!你把上一次显的tempBus[]清空不就行了!你那里面的TextView要清除轻型?

tempBus是一个类数组,里面存放的是类,修改的是类的成员变量。我是想在要显示ListView的内容是把之前ListView 中的内容清除了。

#5


引用 2 楼  的回复:
ListView.removeAllViews();

加了这个函数报错了。有没有那个函数能判断ListView中是否有数据。

#6


作者应该用适配器来添加ListView的Item比较好吧

给你提供一个思路:
1,当我们要加载item的时候,首先把 list清空

list.clear(); 

适配器

adapter1 =new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); 
listView.setAdapter(adapter1); 

这样加载以后就把Listview 中的数据清空了

2,然后再加载我们想要的数据

list.add("a"); 
list.add("c"); 
list.add("b"); 
list.add("a");
list.add("c");
list.add("b");

适配器

adapter1 =new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); 
listView.setAdapter(adapter1); 
adapter1 =new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter1);

这样就可以清空以前的数据而得到我们更新的结果

#7


感谢楼主以及@Flyinghoneybee这位朋友,解决了困扰我三天的问题
主要是listview刷新的问题,我一直不能清空原先已添加的数据,再次点击只会在原有基础上添加,之前也在其他地方看到过list.clear()这个方法,但当时自以为是地认为是listview没有这个方法,只有removeAllViews和clearFocus等方法,后来看到此帖后,百度了下这个方法,方才明白list指的是list<>集合,所以在我的程序中就是我定义的listData了
原谅我这么多废话,哈哈,新手小白路过

#8


如果item包换imageview呢,每个imageview的图片都是一样的,也用arrayadapter?不用的话,clear能干净么?

#9


把 adapter.clear() 就可以啦

#10


赞一个,困扰我两三天的问题,今天解决了,感谢楼主的贴,已经感谢@Flyinghoneybee 的回答,之前一直以为清空listview的数据,原来清空的是list集合

#11



有一个listAdapter.notifyDataSetChanged()  的方法 你百度一下可以试试 只需要注意adapter中list是同一个对象

#12


listView.setAdapter(null);//实测可清空

#13


太棒了。。。

#14


在刷新前    清除list集合 就行了

#15


引用 12 楼 faqfaq3 的回复:
listView.setAdapter(null);//实测可清空
程序直接崩掉了

#16


list.clean  清空集合里的元素
在调用 adapter。notif。。。  刷新