2

Здесь есть незначительная проблема. Как и у меня был Recyclerview в диалоге имя фрагмента.ie банка в recyclerview. Когда мы выбираем один банк в recyclerview и после диалоговомфрагмента отклоняем это имя, оно должно появляться на Button, т.е. когда мы выбрали Union Bank из фрагмента диалога он должен появиться на кнопке. Проблема, когда мы нажимаем на кнопку, то его текст изменения, а затем на время уволить слушателяПроблема в кнопке Изменение текста из фрагмента диалога

здесь 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);} 
+0

делает ваш список в вашем фрагменте или он в том же состоянии, где ваша кнопка? – sushildlh

+0

Передача любого обработчика или пользовательского интерфейса прослушивателя при инициализации DialogRecyclerview. –

+0

Можете ли вы показать мне demo @pradeep sir – Abhi

ответ

0

просто создать обратный вызов и реализовать его на своем главном классе (где вы хотите, чтобы отобразить имя) и передать экземпляр обратного вызова адаптера. Теперь фрагмент диалога, теперь, когда вы выбираете какой-либо элемент, просто вызывайте функцию обратного вызова, которая переопределяется в основных calss и внутри этой функции просто меняет текст вашей кнопки.

public interface CallBack { 

void onItemSelect(String text); 

} 

осуществить это в главном классе, как

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

, когда вы открываете dialogfragment от вашей основной деятельности просто передать MainActivity.this в качестве аргумента в диалоговом конструктора. И в диалоговом конструкторе класса написать код, как этого

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

и при выборе элемента списка просто вызовите

callback.onItemSelect(e.getBank_name()); 

Надеется, что это поможет вам.

+0

Не могли бы вы показать мне немного кода? – Abhi

+0

Я изменил свой ответ. –

+0

Я использовал этот метод, но он не подходит ....... – Abhi