gpt4 book ai didi

android - 从对话框更新 RecyclerView

转载 作者:行者123 更新时间:2023-11-29 16:38:22 26 4
gpt4 key购买 nike

如何从另一个类中的对话框更新 recyclerview?

我的对话框作为一个单独的类从 mainActivity 中调用。当我在数据库中进行更改时,我想更新 mainActivity 上的 recyclerview。

对话框:

public class Dialog {

DatabaseExecutor databaseExecutor = new DatabaseExecutor();
private final Activity activity;
private final List<Passenger> passengers;
private final int position;

public Dialog (final Activity activity, final List<Passenger> passengers, final int position){
this.activity = activity;
this.passengers = passengers;
this.position = position;
}

public void showDialog (){
final BottomSheetDialog dialog = new BottomSheetDialog(activity);
dialog.setContentView(R.layout.custom_dialog);

final AppCompatImageView dial, message, info, paid, edit, delete;
final AppCompatTextView name;

name = dialog.findViewById(R.id.dialog_name);
paid = dialog.findViewById(R.id.dialog_paid);

name.setText(passengers.get(position).getName());
if(passengers.get(position).isPaid())
paid.setImageResource(R.drawable.money_paid_72);
else
paid.setImageResource(R.drawable.money_unpaid_72);

paid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Passenger passenger = passengers.get(position);
if (!passengers.get(position).isPaid()){
passenger.setPaid(true);
passenger.setTumblr(R.drawable.money_paid);
passenger.setUser(R.drawable.user_icon);
paid.setImageResource(R.drawable.money_paid_72);
}
else {
passenger.setPaid(false);
passenger.setTumblr(R.drawable.money_unpaid);
passenger.setUser(R.drawable.user_icon_unpaid);
paid.setImageResource(R.drawable.money_unpaid_72);
}
databaseExecutor.updatePassenger(activity, passenger);
}
});
dialog.show();
}
}

附言当这个对话框在 mainActivity 中时,我只是调用了 populateData 方法并且它起作用了。但是如何从这个 Dialog 类中刷新它呢?

最佳答案

您可以在 MainActivity 的对话框中使用 callback

public interface DialogCallback {
public void onDialogCallback();
}

你的 Dialog 构造函数应该是,

DialogCallback callback;

public Dialog (final Activity activity, final List<Passenger> passengers, final int position, DialogCallback callback){
this.activity = activity;
this.passengers = passengers;
this.position = position;
this.callback = callback;
}

在您的对话框按钮中单击使用下面的代码,

paid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Passenger passenger = passengers.get(position);
if (!passengers.get(position).isPaid()){
passenger.setPaid(true);
passenger.setTumblr(R.drawable.money_paid);
passenger.setUser(R.drawable.user_icon);
paid.setImageResource(R.drawable.money_paid_72);
}
else {
passenger.setPaid(false);
passenger.setTumblr(R.drawable.money_unpaid);
passenger.setUser(R.drawable.user_icon_unpaid);
paid.setImageResource(R.drawable.money_unpaid_72);
}
databaseExecutor.updatePassenger(activity, passenger);
callback.onDialogCallback(); // Add this line
}
});

在您的 MainActivity 中使用以下代码,

Dialog dialog = new Dialog(this, passengers, position, new DialogCallback() {
@Override
public void onDialogCallback() {
// Update recycler view code here
}
});
dialog.showDialog();

关于android - 从对话框更新 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983344/

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