读书人

android 的ListActivity刷新,该怎么解

发布时间: 2013-07-16 22:38:05 作者: rapoo

android 的ListActivity刷新

按钮响应在MySimpleAdapter这个类里边...
代码如下:


public class BLShow extends ListActivity{

Map<String,Object> contacts;
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
List<Map<String,Object>> list1=new ArrayList<Map<String,Object>>();
private SimpleAdapter adapter;
String number,name,time;
Date date;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.bllistshow);

DatabaseHelper helper = new DatabaseHelper(getBaseContext());
db = helper.getReadableDatabase();
Cursor cursor = db.query(DatabaseHelper.BLACKLIST, new String[] {DatabaseHelper.NAME,DatabaseHelper.NUMBER},
null, null,null,null,null);
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
name = cursor.getString(0);
number = cursor.getString(1);
cursor.moveToNext();

contacts=new HashMap<String,Object>();
contacts.put("name","姓名: "+name);
contacts.put("number","号码: "+number);
contacts.put("button","删除");
list.add(contacts);
contacts=new HashMap<String,Object>();
contacts.put("name",name);
contacts.put("number",number);
list1.add(contacts);
}

adapter = new MySimpleAdapter(this,list,R.layout.listshow,
new String[]{"name","number","button"},
new int[]{R.id.listshow_name,R.id.listshow_number,R.id.listshow_btn});
setListAdapter(adapter);
}

private class MySimpleAdapter extends SimpleAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);


if (view != null) {
Button button = (Button)view.findViewById(R.id.listshow_btn);
button.setTag(position);
//删除按钮响应,点了之后,list没有刷新,怎么弄?
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
int row = (Integer)arg0.getTag();
contacts = list1.get(row);
number=contacts.get("number").toString();
DatabaseHelper helper = new DatabaseHelper(getBaseContext());
db = helper.getReadableDatabase();
db.delete(DatabaseHelper.BLACKLIST, DatabaseHelper.NUMBER+"=?", new String[] {number});
}
});
}
return view;
}

public MySimpleAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to)
{super(context, data, resource, from, to);}
}
}

ListActivity button 刷新


[解决办法]
有一个notify什么的方法,自己看一下吧

listview里展示的数据放在list里面
而看到的view是存着另外一份。

当内存里的list改变了,view不会更新,需要通知界面更新一下。可以百度listview界面更新,应该能找到答案

读书人网 >Android

热点推荐