Как получить список слов в другом активити в RecycleView, используя Room?
У меня есть MainActivity в котором я осуществляю переборку слов, исползуя кнопки ДА или НЕТ. При нажатии на кнопки я хочу добавлять слова в соотвествующие списки и при открытии одного из двух актвити со списками ДА или НЕТ - получить итоговый полный список слов, которые я уже добавил.
Это Мой MainActivity
public class MainActivity extends AppCompatActivity {
public static final String EXTRA_REPLY = "com.saturnpro.wcounter.REPLY";
public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
private TextView text;
private TextView counterTxt;
List<String> words;
int count = 0;
int i = 0;
Intent replyIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.txt);
counterTxt = findViewById(R.id.countertext);
words = new ArrayList<>();
words.add("hello");
words.add("hi");
words.add("cat");
words.add("dog");
words.add("drink");
words.add("planet");
words.add("space");
words.add("kind");
text.setText(words.get(0));
counterTxt.setText(count+"");
replyIntent = new Intent();
}
public void addToYesList(View view) {
i++;
if(i < words.size()) {
String word = words.get(i);
text.setText(word);
count++;
counterTxt.setText(count+"");
if(TextUtils.isEmpty(word)) {
setResult(RESULT_CANCELED, replyIntent);
}
else {
replyIntent.putExtra(EXTRA_REPLY, words.get(i));
setResult(RESULT_OK, replyIntent);
}
}
else {
text.setText("Слов больше нет");
}
}
public void addToNoList(View view) {
i++;
if (i < words.size()) {
String word = words.get(i);
text.setText(word);
if(TextUtils.isEmpty(word)) {
setResult(RESULT_CANCELED, replyIntent);
}
else {
replyIntent.putExtra(EXTRA_REPLY, word);
setResult(RESULT_OK, replyIntent);
}
finish();
}
else {
text.setText("Слов больше нет");
}
}
public void iknow(View view) {
Intent i = new Intent(MainActivity.this, YesList.class);
startActivityForResult(i, NEW_WORD_ACTIVITY_REQUEST_CODE);
}
public void idontknow(View view) {
Intent i = new Intent(MainActivity.this,NoList.class);
startActivity(i);
}
}
Это активити для хранения слов, которые были добавлены по кнопки "Да"
public class YesList extends AppCompatActivity {
private WordViewModel mWordViewModel;
public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yes_list);
RecyclerView recyclerViewYes = findViewById(R.id.listYes);
final WordListAdapter adapter = new WordListAdapter(new WordListAdapter.WordDiff());
recyclerViewYes.setAdapter(adapter);
recyclerViewYes.setLayoutManager(new LinearLayoutManager(this));
// mWordViewModel = new ViewModelProvider(this).get(WordViewModel.class);
mWordViewModel = new ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).get(WordViewModel.class);
mWordViewModel.getAllWords().observe(this, words -> {
// Update the cached copy of the words in the adapter.
adapter.submitList(words);
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
Words word = new Words(data.getStringExtra(MainActivity.EXTRA_REPLY));
mWordViewModel.insert(word);
Log.d("proverka", mWordViewModel.toString());
} else {
Toast.makeText(
getApplicationContext(),
R.string.empty_not_saved,
Toast.LENGTH_LONG).show();
}
}
}






