Только начинаю погружаться в android, в связи с этим возникают некие сложности. У меня в проекте есть recyclerView с обектами Note, при нажатии на которые я открываю активность с информацией об этой "записке", конкретно название и основной текст. У меня реализовано подгрузка названия и текста в активность, при ее открытии, но я не понимаю, как я могу сохранить отредактированную заметку и отобразить обновленные название и текст на "главном" экране.
Код recyclerViewAdapter.java
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
Context mContext;
List<Note> mData;
Dialog mDialog;
//NotesFragment notesFragment;
int selected;
public RecyclerViewAdapter(Context mContext, List<Note> mData) {
this.mContext = mContext;
this.mData = mData;
//this.notesFragment = notesFragment;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v;
v = LayoutInflater.from(mContext).inflate(R.layout.notes_list_item,viewGroup,false);
final MyViewHolder viewHolder = new MyViewHolder(v);
//---------------------Инициализация диалогового окна и его вызов по кнопке----------------------------------------------------------
mDialog = new Dialog(mContext);
mDialog.setContentView(R.layout.dialog_note);
Button yes_button = mDialog.findViewById(R.id.dialog_yes_btn);
Button no_button = mDialog.findViewById(R.id.dialog_no_btn);
viewHolder.item_note.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(mContext,"Test Click" + String.valueOf(viewHolder.getAdapterPosition()),Toast.LENGTH_SHORT).show();
mDialog.show();
selected = viewHolder.getAdapterPosition();
return false;
}
});
yes_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
deleteItem(selected);
mDialog.cancel();
notifyDataSetChanged();
// for (int i = 0; i < mData.size(); i++) {
// mData[i]
// }
}catch (ArrayIndexOutOfBoundsException e){
Log.e("Error","\n ArrayIndexOutOfBoundsException length=10 index=-1 \n Опять -1, но как ???");
}
}
});
no_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDialog.cancel();
}
});
//-------------------------------------------------------------------------------------------------------------------------------------
// Редактор заметки?
viewHolder.item_note.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext,NoteActivity.class);
intent.putExtra("Title",viewHolder.tv_Name.getText().toString());
intent.putExtra("Text",viewHolder.tv_Text.getText().toString());
mContext.startActivity(intent);
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tv_Name.setText(mData.get(position).getName());
holder.tv_Date.setText(mData.get(position).getDate());
holder.button.setBackgroundResource(mData.get(position).getFavourite());
holder.tv_Text.setText(mData.get(position).getText());
}
@Override
public int getItemCount() {
return mData.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
private LinearLayout item_note;
private TextView tv_Name;
private TextView tv_Date;
private Button button;
private TextView tv_Text;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
item_note = itemView.findViewById(R.id.note_item);
tv_Name = itemView.findViewById(R.id.name_note);
tv_Date = itemView.findViewById(R.id.date_note);
button = itemView.findViewById(R.id.favorite_btn_note);
tv_Text = itemView.findViewById(R.id.text_note);
}
}
//Добавление данных
public void addItem(int position, Note note){
mData.add(position, note);
//Мы можем вызвать
super.notifyItemInserted(position);
}
//Удаление данных
public void deleteItem(int position){
mData.remove(position);
//То же самое с методом
super.notifyItemRemoved(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, mData.size());
// notesFragment.decreasePosition();
NotesFragment.decreasePosition();
}
}
Код NoteActivity.java
public class NoteActivity extends AppCompatActivity {
private String NoteTitle;
private String NoteText;
EditText textNote;
EditText titleNote;
Button saveBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note);
saveBtn = findViewById(R.id.save_btn);
// saveBtn.setCompoundDrawablesWithIntrinsicBounds(
// AppCompatResources.getDrawable(this, R.drawable.save), null, null, null); --иконочка
titleNote = findViewById(R.id.title_note);
textNote = findViewById(R.id.main_text_note);
Intent intent = getIntent();
NoteTitle = intent.getStringExtra("Title");
NoteText = intent.getStringExtra("Text");
titleNote.setText(NoteTitle);
textNote.setText(NoteText);
saveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent intent = new Intent(getApplicationContext(),MainActivity.class);
// startActivity(intent); -- создание новой мейн активности
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.putExtra("TitleGet",titleNote.getText().toString());
finish();
}
});
}
}
Повторюсь - нужно как-то получать обновленное название и текст заметки по нажатии на кнопку saveBtn. Заранее извиняюсь, если что-то непонятно. Один из первых разов на сайте. Заранее спасибо за ответ!
Виртуальный выделенный сервер (VDS) становится отличным выбором
При динамическом заполнении таблицы колонками возникла проблема с их редактированиемДанные подгружаются с базы данных, поэтому был вынужден...
Задание: Выполнить приложение командной строки с двумя параметрами, один из которых – количество потоков, другой параметр – количество...
хотелось проверить получение параметров на их валидность и выбросить исключение с соответствующим описанием ошибки, для этого как я понимаю...
Как в css сделать так, чтобы высота дочернего блока занимала всю высоту родительского? Высота родительского блока при этом не определена