我通过启动对话框的适配器调用接口函数。 我想根据用户与对话框的交互方式更新回收站视图列表,即他是按下正按钮还是按下按钮。
我面临的问题:
方法我尝试过,每当用户按下正或负按钮时,更新全局变量并根据此结果执行操作。 但我面临的问题是功能在用户按下确定/取消按钮之前返回全局值。
从我调用该功能的地方:
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;
}
答案 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);