gpt4 book ai didi

android - 将数据从 DialogFragment 返回到适配器

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:49 24 4
gpt4 key购买 nike

我正在尝试使用接口(interface)将数据从 DialogFragment 返回到显示它的 ArrayAdapter

我读过类似的东西 here , 但我不知道如何在 DialogFragment 中调用返回数据的函数。

有人可以帮忙吗?

MyDialog.java

public class MyDialog extends DialogFragment {  

static interface Listener {
void returnData(int result);
}

/* ... */

@Override
public void onActivityCreated (Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);

mBtnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

// How can I call PCListAdapter.returnData ?

dismiss();
}
});
}

}

PCListAdapter.java

public class PCListAdapter extends ArrayAdapter<PC> implements MyDialog.Listener {

/* ... */

public void showCommentDialog() {

FragmentManager fm = ((Activity)mContext).getFragmentManager();
MyDialog dialog = new MyDialog();
dialog.show(fm, "mydialog");
}

@Override
public void returnData(int result) {
}
}

最佳答案

您阅读的链接讨论了 fragment 与 Activity 的通信(使用监听器)。这样做是因为 Fragment 与 Activity 紧密耦合。现在在你的情况下,因为你正在使用适配器来启动 fragment ,这是你可能做的。

public class MyDialog extends DialogFragment {  

private Listener mListener;

public void setListener(Listener listener) {
mListener = listener;
}

static interface Listener {
void returnData(int result);
}

/* ... */

@Override
public void onActivityCreated (Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);

mBtnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

if (mListener != null) {
mListener.returnData(data);
}

dismiss();
}
});
}
}

对于适配器,

public class PCListAdapter extends ArrayAdapter<PC> implements MyDialog.Listener {

/* ... */

public void showCommentDialog() {

FragmentManager fm = ((Activity)mContext).getFragmentManager();
MyDialog dialog = new MyDialog();
dialog.setListener(PCListAdapter.this);
dialog.show(fm, "mydialog");
}

@Override
public void returnData(int result) {
}
}

关于android - 将数据从 DialogFragment 返回到适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16885870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com