更新Recyclerview列表时出错?

时间:2016-12-16 10:09:23

标签: android android-recyclerview alertdialog android-alertdialog

我通过启动对话框的适配器调用接口函数。 我想根据用户与对话框的交互方式更新回收站视图列表,即他是按下正按钮还是按下按钮。

我面临的问题:

方法我尝试过,每当用户按下正或负按钮时,更新全局变量并根据此结果执行操作。 但我面临的问题是功能在用户按下确定/取消按钮之前返回全局值。

从我调用该功能的地方:

holder.actionTask.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {

                    Context mainActivityContext= Constants.getContext();

                    if (action_id.equals("pain"))
                    {

                        if (mainActivityContext!=null && mainActivityContext instanceof MainActivity)
                        {
                            interfaceAdapter=((HealthVitalsFunction) mainActivityContext);
                           interfaceAdapter.openPainRecordDialog(context,dbHelper);

                            Toast.makeText(context,"Pain "+Boolean.toString(Constant.taskdone), Toast.LENGTH_SHORT).show();
                        }

                     }
        }
}

openPainRecordDialog函数:

@Override
    public boolean openPainRecordDialog(final Context context, final DbHelper dbHelper) {


        alertDialogBuilder
                .setCancelable(false)
                .setPositiveButton("ADD", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

            **Constants.taskDone=true;**
                })
                .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
            Constants.taskDone=false;
                        dialog.cancel();
                    }
                });

        AlertDialog alertDialog = alertDialogBuilder.create();

        alertDialog.show();

       return Constants.taskDone;

    }

全局变量:

public class Constants {
          public static boolean taskDone;
}

1 个答案:

答案 0 :(得分:0)

布尔值的默认值为false 所以即使你没有赋值,它也会返回false

你可以使用false取消取消,只需更新列表,如

在Adapter类中创建方法

public void update(ArrayList<Model> modelList){
    adapterModelList.clear(); 
    for (Product model: modelList) {
        adapterModelList.add(model); 
    }
    notifyDataSetChanged();
}

称之为

((MyRecyclerAdapter)recyclerView.getAdapter()).update(modelList);