Непонимаю как динамически обновлять состояние элемента в блоке RecyclerView
Класс MainActivity:
public class MainActivity extends AppCompatActivity {
public static final String Data_base = "List";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.id_rv_container);
RAdapter radapter = new RAdapter(this);
recyclerView.setAdapter(radapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
Button btncreate = findViewById(R.id.btn_create);
btncreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String adress = "adress";
String aname = "name";
final SharedPreferences.Editor name = getSharedPreferences(Data_base, MODE_PRIVATE).edit();
name.remove("list_item_id");
name.putString(aname, adress);
name.apply();
final SPreferenceSG sp_class2 = new SPreferenceSG(v.getContext(),aname);
sp_class2.set_sp_name(aname);
sp_class2.set_sp_adress(adress);
}
});
}
}
Класс RecyclerView:
public class RAdapter extends RecyclerView.Adapter<RAdapter.ViewHolder> {
private static final String Data_base = "List";
private ArrayList<String> adress_List;
private ArrayList<String> name_List;
private ArrayList<String> last_date;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ConstraintLayout row;
TextView name_tv, adress_tv, data_tv;
ImageView img;
Button btn_start, btn_settings;
ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
row = itemView.findViewById(R.id.a_row);
name_tv = itemView.findViewById(R.id.name_tv);
adress_tv = itemView.findViewById(R.id.adress_tv);
data_tv = itemView.findViewById(R.id.data_tv);
img = itemView.findViewById(R.id.img);
btn_start = itemView.findViewById(R.id.btn_start);
btn_settings = itemView.findViewById(R.id.btn_settings);
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v) {
int pos = getAdapterPosition();
}
});
btn_settings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v) {
int pos = getAdapterPosition();
//CustomDialog customDialog = new CustomDialog(v.getContext(),name_List.get(pos));
//customDialog.show();
name_List.remove(pos);
}
});
}
@Override
public void onClick(View v) {
}
}
RAdapter(Context context) {
// Вывести весь список базы SharedPreference
SharedPreferences sharedPreferences = context.getSharedPreferences(Data_base, Context.MODE_PRIVATE);
adress_List = new ArrayList<>();
name_List = new ArrayList<>();
last_date = new ArrayList<>();
Map<String, ?> allEntries = sharedPreferences .getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
//System.out.println(entry.getKey()+" : "+entry.getValue());
adress_List.add((String) entry.getValue());
name_List.add(entry.getKey());
final SPreferenceSG sp_getter = new SPreferenceSG(context,entry.getKey());
last_date.add(sp_getter.get_sp_last_backup_date());
}
}
@Override
public void onBindViewHolder(RAdapter.ViewHolder viewHolder, int i) {
Log.d(TAG, "bind, position = " + i);
TextView set_name_tv = viewHolder.name_tv;
set_name_tv.setText(name_List.get(i));
TextView set_tv = viewHolder.adress_tv;
set_tv.setText(adress_List.get(i));
TextView set_last = viewHolder.data_tv;
set_last.setText(last_date.get(i));
}
@Override
public int getItemCount() {
return adress_List.size();
}
@Override
public RAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.row, parent, false);
return new ViewHolder(view);
}
}
Разметка блока RecycleView:
[