需求是这样:
在ListView中我加了一个Button,要求点击Button后弹出一个Dialog选择框,在选择并点击确认后,更新数据库并刷新ListView的中的title 栏位.
但是由于这个Button的onClick事件是在继承自SimpleAdapter类的 MySimpleAdapter中处理的,MySimpleAdapter大致如下
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view =  super.getView(position, convertView, parent);
  Button btn = (Button)view.findViewById(R.id.btn_process); 
  btn.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
        AlertDialog.Builder dlg = new AlertDialog.Builder(context); //context在构造时保存
        dlg.setTitle("请输入");
        final String []items ={"选项1","选项2"};
        dlg.setSingleChoiceItems(items , 0, new   
                                               android.content.DialogInterface.OnClickListener(){
   @Override
   public void onClick(DialogInterface dialog, int which) {
   Toast.makeText(context, items[which], Toast.LENGTH_SHORT).show(); //在此能够显示所选择的内容
   }
});
        dlg.setPositiveButton("确定", new DialogInterface.OnClickListener(){
  @Override
  public void onClick(DialogInterface dialog, int which) {

  }
});
        ...
        dlg.show();
     }
  }
}
...
现在的问题是我如何更新数据库呢?难道在Adapter中直接去操作数据库么?
更麻烦的是我如何让ListView刷新呢?
以上
  感谢

解决方案 »

  1.   

    第一个问题不知道怎么解决
    刷新listview 可以试试在使用适配器的对象的notifyDataSetChanged()方法刷新
      

  2.   

    public void onClick(DialogInterface dialog, int which) {
     更新数据库的代码
    }
    说实在,你这个问题难度为0,拜托加点难度。
      

  3.   


    dlg.setPositiveButton("确定", new DialogInterface.OnClickListener(){
    @Override
    public void onClick(DialogInterface dialog, int which) {
    //更新数据库代码,如果耗时长请使用线程更新
    }
    });
    更新完成后给adapter中的保存数据的变量重新赋值,再调用adapter.notifyDataSetChanged();方法更新listview
      

  4.   


    这个我也知道可以在这里更新数据库,只是觉得在Adapter中进行数据库的操作不太好
    其实我是想是否有什么办法可以把这个Button的click事件传到ListView去,然后统一处理修改Adapter的Data,然后 Adapter.this.notifyDataSetChanged();
    这个可以做到,谢谢啦,不论怎样,功能都实现了. 先结贴:)