修改时spinner的初始化及AlertDialog的简单使用

在写一下listview布局时,常常要对某一项做出修改,点击某一项后一般会跳出一个弹窗,弹窗会显示一些信息,且窗口下方有一个或几个按钮提醒你进行下一步操作。
下面是效果图。
修改时spinner的初始化及AlertDialog的简单使用_第1张图片修改时spinner的初始化及AlertDialog的简单使用_第2张图片修改时spinner的初始化及AlertDialog的简单使用_第3张图片
接下来的一些内容与我之前博客有交叉的地方,且实现的方法里涉及到对日期选择及下拉列表Spinner控件的使用,请参见我的上一篇博客Android日期选择及下拉列表Spinner控件的使用
具体的代码实现如下
首先是获取点击项以及点击项的各个内容,我这里是listview布局,所以可直接使用listView.setOnItemClickListener方法

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//单击修改列表项
            @Override
            public void onItemClick(AdapterView adapterView, View view, int position, long l) {
                //获取点击项:
                HashMap temp = (HashMap) listViewAdapter.getItem(position);
                final String taskID = temp.get("_id");    //获取点击的提醒项ID
                final String taskDate = temp.get("consumeDate");    //获取点击的提醒项consumeDate
                final String taskKinds = temp.get("consumeKinds");    //获取点击的提醒项consumeKinds
                final String taskMoney = temp.get("consumeMoney");    //获取点击的提醒项consumeMoney
                final String taskText = temp.get("consumeText");    //获取点击的提醒项consumeText
                //获取这些内容是要在修改的方法中进行初始化,不能点击修改之后各个输入框都是空的,而应该显示原来的值
                Cursor result = dbRead.query("tb_consume", null, "_id=? ", new String[]{taskID}, null, null, null, null);
                //我这里用的是sqlite数据库,你可根据自己的内容进行获取即可。
                result.moveToFirst();
                HashMap itemFindByID = new HashMap();
                itemFindByID.put("id", "ID:" + String.valueOf(result.getInt(0)) + "\n");
                itemFindByID.put("consumeDate", "日期:" + result.getString(1) + "\n");
                itemFindByID.put("consumeKinds", "种类:" + result.getString(2) + "\n");
                itemFindByID.put("consumeMoney", "金额:" + result.getString(3) + "\n");
                itemFindByID.put("consumeText", "备注:" + result.getString(4) + "\n");
                //以下是AlertDialog的使用
                new AlertDialog.Builder(getActivity())
                        .setTitle("详细信息")
                        .setMessage(itemFindByID.get("id") + itemFindByID.get("consumeDate") + itemFindByID.get("consumeKinds") + itemFindByID.get("consumeMoney")
                                + itemFindByID.get("consumeText"))
                        .setNegativeButton("修改该项内容", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface arg0, int arg1) {
                                final Bundle bundle = new Bundle();
                                bundle.putString("taskID", taskID);
                                bundle.putString("taskDate", taskDate);
                                bundle.putString("taskKinds", taskKinds);
                                bundle.putString("taskMoney", taskMoney);
                                bundle.putString("taskText", taskText);
                                UpdateFragment updateFragment = new UpdateFragment();
                                updateFragment.setArguments(bundle);
                                getFragmentManager().beginTransaction()
                                        .replace(R.id.fragment_container, updateFragment) 
                                        .commit();
                            }

                        })
                        .setPositiveButton("关闭窗口", null)
                        .create()
                        .show();
            }
        });

然后在修改的Activity里获取各值

//先将EditView的三项获取并放置
final String updateDate = getArguments().getString("taskDate");
final String updateMoney = getArguments().getString("taskMoney");
 final String updateText = getArguments().getString("taskText");
  et_date.setText(updateDate);//这里的日期是原来的日期,在这可对et_date监听并使用日期选择方法,但不能将当前系统日期置入
  et_money.setText(updateMoney);
  et_text.setText(updateText);

最重要的就是spinner的值,初始值应该是listview的值,而不能按照之前的顺序直接放在那

final String updateKinds = getArguments().getString("taskKinds");//同上面一样获取之前的值
        List list = new ArrayList();
        list.add("000");//这里一定要补一个位,可以是空格,也可以随便输
        list.add("零花");
        list.add("吃饭");
        list.add("日常");
        list.add("学习");
        list.add("饭卡");//因为不知道原来是哪个,所以要全部添加
        list.remove(updateKinds);//将之前选择的那一项删除,因为要放在首位,所以后面会多出一位
        list.set(0, updateKinds);//将之前选择的那一项覆盖0位,这样原来选择的那一项内容就成为首位

接下来根据自己的内容提交就OK
END

你可能感兴趣的:(Android)