如何将对话框片段中的数据返回到活动适配器?

问题描述 投票:0回答:2

我在我的Activity Adapter中显示一个Dialog Fragment,我在Dialog片段中有一个EditText和一些其他视图。并且我必须直接将一些数据返回到Activity和适配器,单击Dialog Dragment中的更新按钮我可以将数据传递给Activity,但是无法将数据传递给adapter.My适配器监听器不工作

public class MyDialogFragment extends android.support.v4.app.DialogFragment 
  {

    private OnItemUpdateListenerDialog onItemUpdateListenerDialog;


    private void SetValues(final CartItemDetail item) {

    buttUpdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           setValue=editSet.getText().toString();//get value from editText

          onItemUpdateListenerDialog.onItemUpdateRequest(addItemToCart(item.getDataOne(), item.getDataTwo()));//listner for activity
           onSetChangeListnerDialog.returnData(setValue);//listner for adapter


            dismiss();

        }
    });


    }
     public interface OnItemUpdateListenerDialog {
    void onItemUpdateRequest(JSONObject jsonObject);

 }

public void setOnItemUpdateListenerDialog(OnItemUpdateListenerDialog onItemUpdateListener) {
    this.onItemUpdateListenerDialog = onItemUpdateListenerDialog;

}

public interface OnSetChangeListenerDialog {
    void returnData(String result);
}
 public  void setOnSetChangeListenerDialog(OnSetChangeListenerDialog onSetUpdateRequest) {
    onSetChangeListnerDialog = onSetChangeListnerDialog;
}

  @Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        this.onItemUpdateListenerDialog = (OnItemUpdateListenerDialog)activity;//activit listner
           this.onSetChangeListnerDialog = (OnSetChangeListenerDialog)activity;//adapter listner
    }
    catch (final ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
    }
}
}



}

我的适配器类

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> 
implements View.OnClickListener,MyDialogFragment.OnSetChangeListenerDialog{
     @Override
      public void returnData(String result) {
    setValue = result;
      }

       }
java android
2个回答
0
投票

尝试定义一个外部简单接口:

returning.Java

public interface Returning {
    void return_value(String value);
}

my dialog fragment.Java

public class MyDialogFragment {
    private Returning returning;

    buttUpdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            returning= ((Returning ) context);
            returning.return_value("everything");
            // ...
        }
    }
}

my adapter.Java

public class MyAdapter implements Returning {
    // ...
    @Override
    public void return_value(String value) {
        setValue = value;
    }
}

0
投票

将此方法添加到对话框类

public interface EditDialogListener { void receiveResult(String inputText); }

当你想将值返回到主活动时,只需要使用此方法

EditDialogListener activity = (EditDialogListener) getActivity(); activity.receiveResult(YourEditText.getText().toString());

现在你的活动

public class YourActivity extends Activity implements EditDialogListener

添加receiveResult方法

public void receiveResult(String str) { textReturned.setText(str);//set the value on an `editText` at your activity }

© www.soinside.com 2019 - 2024. All rights reserved.