如何获得对适配器的片段对话框按钮响应?
How to get FragmentDialog button response to adapter?
我需要从 FragmentDialog 获得按下按钮的响应到 adapter.So 基本上我已经为 viewholder 中的按钮设置了点击侦听器,现在当我按下该按钮时,对话框打开并且我需要获得我从该对话框中设置的两个按钮的响应。
我的片段对话框:
public class FragmentDialog extends AppCompatDialogFragment{
private EditText edtTextAmount;
private TextView txtEnterAmount;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
LayoutInflater inflater=getActivity().getLayoutInflater();
View view=inflater.inflate(R.layout.fragment_add_amount,null);
builder.setView(view)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
edtTextAmount=view.findViewById(R.id.edtTtxt_enterAmount);
return builder.create();
}
}
我的适配器:
public class WatchlistAdaptor extends RecyclerView.Adapter<WatchlistAdaptor.WatchlistViewHolder> {
//DescriptionFragment descriptionFragment;
private LayoutInflater inflater;
private ArrayList<WatchlistItems> watchlistItems;
private Context context;
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onDeleteClickRV(int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
class WatchlistViewHolder extends RecyclerView.ViewHolder {
private ImageView cryptoImg;
private TextView cryptoAcronym;
private TextView cryptoName;
private Button btnAddToActCurrencies;
WatchlistViewHolder(View itemView/*, WatchlistAdaptor adaptor*/, final OnItemClickListener listener) {
super(itemView);
this.cryptoImg = itemView.findViewById(R.id.img_wallet_WatchlistRV_cryptoImage);
this.cryptoAcronym = itemView.findViewById(R.id.txt_wallet_WatchlistRV_cryptoAcronym);
this.cryptoName = itemView.findViewById(R.id.txt_wallet_WatchlistRV_cryptoName);
this.btnAddToActCurrencies = itemView.findViewById(R.id.btn_wallet_WatchlistRV_AddToActCurrencies);
// this.animAlpha = AnimationUtils.loadAnimation(context,R.anim.anim_alpha);
btnAddToActCurrencies.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentActivity activity = (FragmentActivity) (context);
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentDialog fragmentDialog = new FragmentDialog();
fragmentDialog.show(fragmentManager, "fragmentalert");
}
}
});
}
}
...
}
- 评论:https://developer.android.com/training/basics/fragments/communicating
- 向您的片段添加一个侦听器,该侦听器会在单击按钮时调用。
示例:
public class FragmentDialog extends AppCompatDialogFragment{
private EditText edtTextAmount;
private TextView txtEnterAmount;
// Add listener class and instance
private OnButtonClickListener mListener;
interface OnButtonClickListener() {
void onButtonClick();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
LayoutInflater inflater=getActivity().getLayoutInflater();
View view=inflater.inflate(R.layout.fragment_add_amount,null);
builder.setView(view)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// Invoke listener on UI click
if (mListener != null) {
mListener.onButtonClick();
}
}
});
edtTextAmount=view.findViewById(R.id.edtTtxt_enterAmount);
return builder.create();
}
@Override
public void onAttach(Context context) {
// Save context the fragment is attached to as the listener
if (context instanceof OnButtonClickListener) {
mListener = (OnButtonClickListener) context;
}
}
}
- 更新您的 activity 以实现接口并委托操作
示例:
public void MyActivity extends AppCompatActivity implements FragmentDialog.OnButtonClickListener {
@Override
public void onButtonClick() {
// Since the activity implements the interface, it will be
// called when the fragment button is clicked -
// tell your adapter or whatever what to do
mAdapter.handleButtonClick();
}
}
希望对您有所帮助!
我需要从 FragmentDialog 获得按下按钮的响应到 adapter.So 基本上我已经为 viewholder 中的按钮设置了点击侦听器,现在当我按下该按钮时,对话框打开并且我需要获得我从该对话框中设置的两个按钮的响应。
我的片段对话框:
public class FragmentDialog extends AppCompatDialogFragment{
private EditText edtTextAmount;
private TextView txtEnterAmount;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
LayoutInflater inflater=getActivity().getLayoutInflater();
View view=inflater.inflate(R.layout.fragment_add_amount,null);
builder.setView(view)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
edtTextAmount=view.findViewById(R.id.edtTtxt_enterAmount);
return builder.create();
}
}
我的适配器:
public class WatchlistAdaptor extends RecyclerView.Adapter<WatchlistAdaptor.WatchlistViewHolder> {
//DescriptionFragment descriptionFragment;
private LayoutInflater inflater;
private ArrayList<WatchlistItems> watchlistItems;
private Context context;
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onDeleteClickRV(int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
class WatchlistViewHolder extends RecyclerView.ViewHolder {
private ImageView cryptoImg;
private TextView cryptoAcronym;
private TextView cryptoName;
private Button btnAddToActCurrencies;
WatchlistViewHolder(View itemView/*, WatchlistAdaptor adaptor*/, final OnItemClickListener listener) {
super(itemView);
this.cryptoImg = itemView.findViewById(R.id.img_wallet_WatchlistRV_cryptoImage);
this.cryptoAcronym = itemView.findViewById(R.id.txt_wallet_WatchlistRV_cryptoAcronym);
this.cryptoName = itemView.findViewById(R.id.txt_wallet_WatchlistRV_cryptoName);
this.btnAddToActCurrencies = itemView.findViewById(R.id.btn_wallet_WatchlistRV_AddToActCurrencies);
// this.animAlpha = AnimationUtils.loadAnimation(context,R.anim.anim_alpha);
btnAddToActCurrencies.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentActivity activity = (FragmentActivity) (context);
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentDialog fragmentDialog = new FragmentDialog();
fragmentDialog.show(fragmentManager, "fragmentalert");
}
}
});
}
}
... }
- 评论:https://developer.android.com/training/basics/fragments/communicating
- 向您的片段添加一个侦听器,该侦听器会在单击按钮时调用。
示例:
public class FragmentDialog extends AppCompatDialogFragment{
private EditText edtTextAmount;
private TextView txtEnterAmount;
// Add listener class and instance
private OnButtonClickListener mListener;
interface OnButtonClickListener() {
void onButtonClick();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
LayoutInflater inflater=getActivity().getLayoutInflater();
View view=inflater.inflate(R.layout.fragment_add_amount,null);
builder.setView(view)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// Invoke listener on UI click
if (mListener != null) {
mListener.onButtonClick();
}
}
});
edtTextAmount=view.findViewById(R.id.edtTtxt_enterAmount);
return builder.create();
}
@Override
public void onAttach(Context context) {
// Save context the fragment is attached to as the listener
if (context instanceof OnButtonClickListener) {
mListener = (OnButtonClickListener) context;
}
}
}
- 更新您的 activity 以实现接口并委托操作
示例:
public void MyActivity extends AppCompatActivity implements FragmentDialog.OnButtonClickListener {
@Override
public void onButtonClick() {
// Since the activity implements the interface, it will be
// called when the fragment button is clicked -
// tell your adapter or whatever what to do
mAdapter.handleButtonClick();
}
}
希望对您有所帮助!