gpt4 book ai didi

android - 如何在适配器的 Bottom Sheet fragment 中设置 TextView 占位符

转载 作者:行者123 更新时间:2023-12-03 10:12:02 25 4
gpt4 key购买 nike

我有一个像这样的 BottomSheetDialogFragment 类

重命名钱包对话框

public class RenameWalletDialog extends com.google.android.material.bottomsheet.BottomSheetDialogFragment  {

EditText editTextWalletName;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.rename_wallet_sheet, container, false);

editTextWalletName = (EditText) view.findViewById(R.id.custom_input_et);

view.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(), "Confirm button clicked", Toast.LENGTH_SHORT).show();
}
});

view.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});

view.findViewById(R.id.clear_field).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
editTextWalletName.getText().clear();
}
});

return view;

}
}

我像这样在我的适配器类中创建了一个函数

钱包适配器
@Override
public DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mCtx).inflate(R.layout.wallet_item, parent, false);
final DataObjectHolder dataObjectHolder = new DataObjectHolder(view);

dataObjectHolder.walletoptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(v.getContext(), "Option Click " + dataObjectHolder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
// Log.d(TAG, "position = " + dataObjectHolder.getAdapterPosition());
Context wrapper = new ContextThemeWrapper(mCtx, R.style.popupMenuStyle);
final PopupMenu popup = new PopupMenu(wrapper, v, Gravity.END);
popup.inflate(R.menu.poupup_menu);

popup.show();

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.one:
showFragmentRenameWallet();
break;
case R.id.two:
//Do operation if menu_item_two
Toast.makeText(mCtx,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
}
});
return dataObjectHolder;
}


@Override
public void onBindViewHolder(DataObjectHolder holder, final int position) {

DecimalFormat formatter = new DecimalFormat("#,###,###");
Double doubleBalance = (double) userWalletList.get(position).getBalance();
String numberFormatBalance = formatter.format(doubleBalance);
holder.walletname.setText(userWalletList.get(position).getWalletName());
holder.walletbalance.setText(String.valueOf( "₦ " +numberFormatBalance));
// holder.walletid.setText(String.valueOf(userWalletList.get(position).getWalletid()));
RenameWalletDialog renameWalletFragment = new RenameWalletDialog();
renameWalletFragment.show(((FragmentActivity)mCtx).getSupportFragmentManager(), renameWalletFragment.getTag());
Bundle bundle = new Bundle();
String walletN = userWalletList.get(position).getWalletName();
bundle.putString("walletname", walletN);
renameWalletFragment.setArguments(bundle);

}


@Override
public int getItemCount() {
return userWalletList.size();
}

public interface MyClickListener {
public void onItemClick(int position, View v);
}

private void showFragmentRenameWallet(){
RenameWalletDialog renameWalletFragment = new RenameWalletDialog();
renameWalletFragment.show(((FragmentActivity)mCtx).getSupportFragmentManager(), renameWalletFragment.getTag());
}

并使用这样的功能
showFragmentRenameWallet();

我想现在每个人都对我的代码逻辑如何工作有了一个基本的了解

我正在努力实现;
  • 我想将 Bottom Sheet 的编辑 TextView 设置为钱包的名称,用户单击
  • 的重命名选项

    但我看不出有任何可行的方式通过适配器执行此操作,因为它实际上并不是适配器 View 的一部分

    有谁知道如何做到这一点?

    注意:在我的适配器的绑定(bind) View 支架中,我得到这样的钱包名称
    holder.walletname.setText(userWalletList.get(position).getWalletName());

    最佳答案

    如果您想通过 bundle 传递数据,请执行此操作

    在适配器中:

    Bundle bundle = new Bundle()
    bundle.putString(SomeKey, value you want to send)
    walletFragmentObject.setArguments(bundle)

    然后在 fragment 中
    String text = getArguments.getString(SomeKey)

    更新:

    更改您的方法,如下所示:
    private void showFragmentRenameWallet(ViewHolder dataObjectHolder) {
    RenameWalletDialog renameWalletFragment = new RenameWalletDialog();
    Bundle bundle = new Bundle();
    String walletN = userWalletList
    .get(dataObjectHolder.getAdapterPosition())
    .getWalletName();
    bundle.putString("walletname", walletN);
    renameWalletFragment.show(
    ((FragmentActivity) mCtx).getSupportFragmentManager(),
    renameWalletFragment.getTag()
    );
    }

    从 onBindViewHolder 中删除与 bundle 和 RenameWalletDialog 相关的代码。

    关于android - 如何在适配器的 Bottom Sheet fragment 中设置 TextView 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61193802/

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