按钮文本中的问题从Dialog Fragment更改

时间:2016-09-12 05:21:11

标签: android android-recyclerview android-dialogfragment dialogfragment

这里有一个小问题就像我在对话框片段中有Recyclerview。在recyclerview中的银行名称当我们在recyclerview中选择一个银行并且在对话框碎片之后忽略该名称应该出现在Button上,即当我们选择 Union Bank < / strong>来自对话框片段它应该出现在按钮上。问题是当我们点击按钮然后它的文本改变而不是关闭时间的解雇听众

这里是Dialog解雇代码:

 mRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(getContext(), mRecyclerView, new ClickListener() {
        @Override
        public void onClick(View view, final int position) {
            Employee e = bank.get(position);
            Toast.makeText(getContext(), e.getBank_id() + "" + e.getBank_name(), Toast.LENGTH_SHORT).show();
            getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialogInterface) {
                    Employee e = bank.get(position);
                    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
                    SharedPreferences.Editor edit = sp.edit();
                    edit.putString("bankname", e.getBank_name());
                    edit.commit();
                }
            });
            c.onItemSelect(e.getBank_name());
            onDismiss(getDialog());
        }

这是onclick事件,其中对话框打开并且应该打印值:

select_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FragmentManager fm=getFragmentManager();
            DialogRecyclerview dr = new DialogRecyclerview(AccountManagement_banks.this,callback);
            dr.setRetainInstance(true);
            dr.show(getSupportFragmentManager(), "Dialog");
            SharedPreferences st = PreferenceManager.getDefaultSharedPreferences(AccountManagement_banks.this);
            String mode=st.getString("bankname","");
            select_button.setText(mode);
            Toast.makeText(getApplication(),mode,Toast.LENGTH_SHORT).show();
        }
    });

同样在:

@Override
public void onItemSelect(String text) {
    select_button.setText(text);
}

这里我创建了新的界面:

 public interface CallBack {
      void onItemSelect(String text);}

1 个答案:

答案 0 :(得分:0)

只需创建一个回调并在主类(要显示名称)上实现它,并将回调实例传递给适配器。现在对话框片段,现在当您选择任何项目时,只需调用在主calss中重写的回调函数,在此函数内部只需更改按钮的文本。

public interface CallBack {

void onItemSelect(String text);

}

在你的主类中实现这个,比如

public class MainActivity extends Activity implements CallBack {
.
.
.
public void onItemSelect(String text){
  button.setText(text);
}
.
.
}

当您从主要活动打开对话碎片时,只需在对话框构造函数中将 MainActivity.this 作为参数传递。在你的Dialog类构造函数中编写你的代码

private Callback callback;
public YourDialog(Context context, Callback callback){
this.callback = callback;
}

当您选择列表项时,只需调用

callback.onItemSelect(e.getBank_name());

希望它会帮助你。