您的位置:首页 > 其它

listview刷新与内部控件的监听

2014-02-03 15:57 246 查看
困扰我多日的关于Android中的listview问题,今天终于完全解决了,首先讲一下到底遇到的是什么问题:(1)点击listview的item布局中的ImageButton按钮来获取相应的Textview的内容(2)通过点击上一问题中的按钮来更新listview。这个跟新listview网上大部分人推荐使用adapter.notifyDataSetChanged();//刷新适配器;

其实关于具体的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();
            }
        }
    };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: