【问题标题】:How to get response from interface method in adapter in android如何从android中适配器中的接口方法获取响应
【发布时间】:2017-04-05 07:26:44
【问题描述】:

所以这里我从适配器类调用接口方法。我想根据用户的输入更新List。我将如何实现它?

适配器类:

public class ToDoListAdaptor extends SectionRecyclerViewAdapter < SectionHeader, Action, SectionViewHolder, ChildViewHolder > {

    @Override
    public void onBindChildViewHolder(final ChildViewHolder holder, final int sectionPosition, final int childPosition, final Action child) {

        Context mainActivityContext = Constants.getContext();

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

            if (mainActivityContext != null && mainActivityContext instanceof MainActivity) {
                interfaceAdapter = ((HealthVitalsFunction) mainActivityContext);
                boolean result = interfaceAdapter.openPainRecordDialog(context, dbHelper, action_id, action_cat_id, action_plan_id, action_name);

                if (result)
                    update(sectionHeaderList, childPosition);
            }

        }

    }
}

问题是当用户完成输入时我无法调用 update()。

编辑:

@Override
    public boolean openPainRecordDialog(final Context context, final DbHelper dbHelper, final String action_id, final String action_cat_id, final String action_plan_id, final String action_name) {


        Constants.painData=false;
        LayoutInflater layoutInflaterAndroid = LayoutInflater.from(context);
        final View mView = layoutInflaterAndroid.inflate(R.layout.pain_record, null);


        final AlertDialog dialog = new AlertDialog.Builder(context)
                .setView(mView)
                .setTitle("")
                .setPositiveButton(android.R.string.ok, null) 
                .setNegativeButton(android.R.string.cancel, null)
                .setCancelable(false)
                .create();




        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(final DialogInterface dialog) {

                Button positiveButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE);
                positiveButton.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        // TODO Do something

                        if (dialog != null && ((AlertDialog) dialog).isShowing()) {
                            dialog.dismiss();
                        }

                        Constants.painData = true;


                    }
                });

                Button negativeButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE);
                negativeButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        // TODO Do something

                        if (dialog != null && ((AlertDialog) dialog).isShowing()) {
                            dialog.dismiss();
                        }

                        Constants.painData = false;
                    }

                });

            }
        });



        // show it
        dialog.show();

        return Constants.painData;

    }

【问题讨论】:

  • 您是否使用了在recyclerview的点击项上弹出的对话框片段?
  • 我正在使用 AlertDialog 类来显示自定义对话框。 @达里什
  • alertDialog 是否如您所愿正确弹出?
  • 是的。它工作正常。当我上下移动recycleview时,状态正在更新。但我想立即改变状态@Darish
  • 发布openPainRecordDialog代码

标签: java android interface adaptor


【解决方案1】:

我想根据用户的输入更新列表。

如果您使用自定义对话框,请提供自定义接口回调,该回调定义了onSuccess() 方法并在您的调用活动中实现,可用于更新recyclerView。干杯:)

【讨论】:

  • 更新数据列表后,调用notifydatasetchanged方法
  • 你能举例说明我是怎么做的吗? @达里什
  • 使用自定义对话框片段,然后将回调传递给构造函数..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多