Есть кликабельный recyclerview с темами и активность, на которую идёт переход после нажатия на элемент recyclerview. Мне нужно заполнить данную активность, основываясь на выбранном варианте из прошлой активности, а именно мне нужно достать из выбранного варианта id (заполнение recyclerview и следующей активности идёт из бд), и далее использовать id в другой активности (заполнение другого recyclerview на основе полученного id).
Есть предположение, что нужно сделать через Intent, но все попытки обвенчались неудачей :(
ChooseThemeActivity
package com.example.myproject;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class ChooseThemeActivity extends AppCompatActivity {
private RecyclerView mRecycler;
private ThemeAdapter mThemeAdapter;
private ThemeDBHelper databaseHelper;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.choose_theme);
mRecycler = findViewById(R.id.recycler_themes);
databaseHelper = new ThemeDBHelper(this);
List<Theme> themeList = databaseHelper.getTheme();
ThemeAdapter.ThemeChoiceListener themeChoiceListener = (theme, position) ->
Toast.makeText(getApplicationContext(), "Был выбран пункт " + theme.getTheme(),
Toast.LENGTH_SHORT).show();
mThemeAdapter = new ThemeAdapter(this, themeChoiceListener, themeList);
mRecycler.setAdapter(mThemeAdapter);
}
public void onThemeChoiceClick(View view) {
Intent intent = new Intent(this, WordActivity.class);
//intent.putExtra("id", id);
startActivityForResult(intent, 0);
}
}
ThemeAdapter
package com.example.myproject;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class ThemeAdapter extends RecyclerView.Adapter<ThemeAdapter.ViewHolder> {
List<Theme> themes;
interface ThemeChoiceListener {
void onThemeChoiceClicked(Theme theme, int position);
}
private final ThemeChoiceListener onClickListener;
private final LayoutInflater inflater;
public ThemeAdapter(Context context, ThemeChoiceListener onClickListener, List<Theme> themes) {
this.onClickListener = onClickListener;
this.themes = themes;
this.inflater = LayoutInflater.from(context);
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_list, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Theme theme = themes.get(position);
holder.themeName.setText(themes.get(position).getTheme());
holder.themeDescription.setText(themes.get(position).getDescriptionTheme());
holder.itemView.setOnClickListener(v -> onClickListener.onThemeChoiceClicked(theme, position));
}
@Override
public int getItemCount() {
return themes.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
final TextView themeName, themeDescription;
public ViewHolder(@NonNull View itemView) {
super(itemView);
themeName = itemView.findViewById(R.id.themeName_tv);
themeDescription = itemView.findViewById(R.id.description_tv);
}
}
}
WordActivity
package com.example.myproject;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class WordActivity extends AppCompatActivity {
private RecyclerView mRecycler;
private WordAdapter mWordAdapter;
private ThemeDBHelper databaseHelper;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.theme_fragment);
mRecycler = findViewById(R.id.recycler_words);
databaseHelper = new ThemeDBHelper(this);
//long ID = getIntent().getLongExtra("ID");
//Intent intent = getIntent();
//String id = intent.getStringExtra("id");
List<Word> wordList = databaseHelper.getWord(/*id*/);
mWordAdapter = new WordAdapter(this, wordList);
mRecycler.setAdapter(mWordAdapter);
}
}