android的ListView怎么刷新。

试了很久都不行,求救啊我是想跳到另外一个activity之后传一些数据回来,数据是传回来了,但是我不懂怎么刷新,我直接调用我构造时的那个方法使用不了。那你说的那个menu... 试了很久都不行,求救啊
我是想跳到另外一个activity之后传一些数据回来,数据是传回来了,但是我不懂怎么刷新,我直接调用我构造时的那个方法使用不了。那你说的那个menu要怎么样刷新呢。也是个新手
展开
 我来答
张立宾
2012-03-30 · 超过18用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:36.6万
展开全部
回传回来以后调用你的adapter的notifyDataSetChanged()方法就可以了。 它的作用是当listview中的数据发生变化时,刷新listview。
追问
我就很奇怪,我调用了之后居然没反应,是不是有什么注意事项
追答
我试过了,你得定制自己的adapter。例子如下:
class MyAdapter extends ArrayAdapter {
private int mResource;
public MyAdapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
arrays = objects;
mResource = textViewResourceId;
mInflater = LayoutInflater.from(ListViewRefreshActivity.this);
// TODO Auto-generated constructor stub
}
String[] arrays ;
private LayoutInflater mInflater;
@Override
public int getCount() {
// TODO Auto-generated method stub
return arrays.length;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view;
// TODO Auto-generated method stub
if(convertView == null) {
view = (TextView)mInflater.inflate(mResource, parent,false);
}else {
view = (TextView)convertView;
}
view.setText(arrays[position].toString());
return view;
}
public void addDatas(String[] datas) {
String[] newArrays = new String[arrays.length+datas.length];
for(int i=0;i<arrays.length;i++) {
newArrays[i] = arrays[i];
}
for(int i=0;i<datas.length;i++) {
newArrays[arrays.length+i] = datas[i];
}
arrays = newArrays;
notifyDataSetChanged();
}
}
到时候你只要调用adapter.addDatas方法就可以了。如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
String[] result = data.getStringArrayExtra("arrays");
adapter.addDatas(result);
}
实现的效果是,在list中增加几个item,当然你也可以根据需要更改逻辑,从而达到想要的效果,比如,替换新的item或者删除item,这都需要在自定义的adapter中实现。
zzhxccw
2012-03-30 · TA获得超过158个赞
知道答主
回答量:132
采纳率:0%
帮助的人:104万
展开全部
如果你只写了oncreate方法.那么只会在创建listview的时候刷新.你想在什么时候刷新最直接的办法加个menu.刷新.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇穜1354
推荐于2017-09-24 · TA获得超过4710个赞
知道小有建树答主
回答量:383
采纳率:25%
帮助的人:103万
展开全部
在做ListView加载数据时如果数据量大的话会造成加载时间过长而卡屏,所以为了解决这个问题,查看了SDK,

在OnScrollListener中有两个方法

只要重写这两个方法就可以实现滚动加载,例如:

public void onScroll(AbsListView v, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lastItem = firstVisibleItem + visibleItemCount - 1;
if (adapter.count == lastItem) {
adapter.count += 10;
adapter.notifyDataSetChanged();
}

}

public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub

Log.i("onScrollStateChanged", "onScrollStateChanged");
}

public abstract void onScroll (AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
Since: API Level 1
Callback method to be invoked when the list or grid has been scrolled. This will be called after the scroll has completed

Parameters
view The view whose scroll state is being reported
firstVisibleItem the index of the first visible cell (ignore if visibleItemCount == 0)
visibleItemCount the number of visible cells
totalItemCount the number of items in the list adaptor
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8b017e57c
2012-04-20
知道答主
回答量:15
采纳率:0%
帮助的人:4.6万
展开全部
notifyDataSetChanged()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式