主要实现思路:
在填充ListView的List集合改变时
将改变后的List集合赋值给Adapter中的集合接收
然后用Adapter对象调用notifyDataSetChanged();
//给List添加新数据 改变原有List
list.add(新内容);
//将新改变后的list赋值给adapter中的list
adapter.list = list;
//用adapter对象调用notifyDataChanged();
adapter.notifyDataChanged();
即可实现动态刷新
详细操作见下面Demo源代码
Activity代码:
package com.example.listviewactfresh;
import java.util.ArrayList;
import java.util.List;
import com.example.adapter.TestAdapter;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
private List<String> list;
private ListView lv;
private Button btn;
TestAdapter adapter;
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<String>();
list.add("我是小明");
list.add("我是小张");
list.add("我是小海");
lv = (ListView) this.findViewById(R.id.myList);
btn = (Button) this.findViewById(R.id.button1);
adapter = new TestAdapter(list, this);
lv.setAdapter(adapter);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
count++;
list.add("我是小"+count); //添加新数据 改变List集合
adapter.list = list; //将改变后的List集合赋给Adapter中的集合
adapter.notifyDataSetChanged(); //调用notifyDataSetChanged方法
}
});
}
}
Adapter代码:
package com.example.adapter;
import java.util.List;
import com.example.listviewactfresh.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class TestAdapter extends BaseAdapter {
public List<String> list;
private Context context;
private LayoutInflater mInflater;
public TestAdapter(List<String> list,Context context) {
super();
this.list = list;
this.context = context;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if(convertView == null){
vh = new ViewHolder();
convertView = mInflater.inflate(R.layout.listitem, null);
vh.tv = (TextView) convertView.findViewById(R.id.textView1);
convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
}
vh.tv.setText(list.get(position));
return convertView;
}
public class ViewHolder{
public TextView tv;
}
}
源码下载地址:http://download.youkuaiyun.com/detail/a85454597/7521793