困扰我多日的关于Android中的listview问题,今天终于完全解决了,首先讲一下到底遇到的是什么问题:(1)点击listview的item布局中的ImageButton按钮来获取相应的Textview的内容(2)通过点击上一问题中的按钮来更新listview。这个跟新listview网上大部分人推荐使用
adapter.notifyDataSetChanged();//刷新适配器;
其实关于具体的listview原理我也不是太清楚,在这里只是记录一下解决问题的方法与相应的代码,方便以后遇到同样的问题来此查阅。
其实关于具体的listview原理我也不是太清楚,在这里只是记录一下解决问题的方法与相应的代码,方便以后遇到同样的问题来此查阅。
其实上面的两个问题合并起来也就是一个问题。
private void loadListView(){
adapter = new SimpleAdapter(this,getData(),R.layout.today_item,
new String[]{"id","detail"},new int[]{R.id.taskid,R.id.detailid}){
public View getView(final int position, View convertView,ViewGroup parent) {
final int index = position;
View v= super.getView(position, convertView, parent);
ImageButton btn=(ImageButton)v.findViewById(R.id.tasksubmit);
btn.setTag(position);
//id=(TextView)v.findViewById(R.id.taskid);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Toast.makeText(getApplicationContext(), "测试提交按钮", Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), "单击我了"+list.get(position).get("id").toString(), 1).show();//通过position来获取TextView的内容,需要重写getView方法
//list.
dialog(index);
}
});
//此监听留作扩充功能使用。
v.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
}
});
return v;
}
};
listView.setAdapter(adapter);
}
private List<Map<String, Object>> getData() {
i++;
System.out.println("第"+i+"次");
list = new ArrayList<Map<String, Object>>();
/*for(int i=0;i<getorder.size();i++)
{
Map<String, Object> map = new HashMap<String, Object>();
map.put("id",getorder.get(i));
map.put("detail", detail.get(i));
list.add(map);
}*/
Map<String, Object> map = new HashMap<String, Object>();
map.put("id","11111");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","1112");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","11113");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","11114");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","11115");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","11116");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","11117");
map.put("detail", "test");
list.add(map);
map = new HashMap<String, Object>();
map.put("id","11118");
map.put("detail", "test");
list.add(map);
return list;
}
public void dialog(final int index){
final Builder builder= new AlertDialog.Builder(this);
builder.setMessage("亲,你确定已经完成了吗?");
builder.setTitle("温馨提示");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//id=(TextView)findViewById(R.id.taskid);
new Thread(){
public void run(){
//OrderService service = new OrderService();
list.remove(index);
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
}
}.start();
//Toast.makeText(getApplicationContext(), l, Toast.LENGTH_LONG).show();
//
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
dialog.dismiss();
}
});
builder.create().show();
}
Handler handler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
//loadingDialog.dismiss();
//loadListView();
}
if (msg.what == 1) {
adapter.notifyDataSetChanged();//刷新适配器;这里是刷新的关键
//loadListView();
Toast.makeText(getApplicationContext(), "提交成功", Toast.LENGTH_LONG).show();
}
}
};