android的ListView怎么刷新。
试了很久都不行,求救啊我是想跳到另外一个activity之后传一些数据回来,数据是传回来了,但是我不懂怎么刷新,我直接调用我构造时的那个方法使用不了。那你说的那个menu...
试了很久都不行,求救啊
我是想跳到另外一个activity之后传一些数据回来,数据是传回来了,但是我不懂怎么刷新,我直接调用我构造时的那个方法使用不了。那你说的那个menu要怎么样刷新呢。也是个新手 展开
我是想跳到另外一个activity之后传一些数据回来,数据是传回来了,但是我不懂怎么刷新,我直接调用我构造时的那个方法使用不了。那你说的那个menu要怎么样刷新呢。也是个新手 展开
4个回答
展开全部
回传回来以后调用你的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中实现。
展开全部
如果你只写了oncreate方法.那么只会在创建listview的时候刷新.你想在什么时候刷新最直接的办法加个menu.刷新.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在做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
在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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
notifyDataSetChanged()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询