Я создаю приложение цитаты, в котором цитата будет внутри представления ресайклера, и при щелчке будет отображаться та же цитата, на которой щелкнул пользователь. Когда я пытался использовать прослушиватель щелчков внутри держателя представления в классе адаптера, активность приложения изменилась на другое, но данные не отображаются.
My Adapter Class.
public class QuotesAdapter extends RecyclerView.Adapter<QuotesAdapter.QuotesViewHolder> {
List<String> quotes = null;
Context context;
public QuotesAdapter(List<String> quotes, Context context) {
this.quotes = quotes;
this.context = context;
}
@NonNull
@Override
public QuotesViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.list_item_quote, viewGroup, false);
return new QuotesViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final QuotesViewHolder quotesViewHolder, int i) {
String[] colors = {"#448AFF", "#FFC107", "#009688", "#E91E63", "#FF5722"};
final String quote = quotes.get(i);
quotesViewHolder.txtQuote.setText(quote);
int color = i % colors.length;
final int intColor = Color.parseColor(colors[color]);
quotesViewHolder.quoteContainer.setBackgroundColor(intColor);
}
@Override
public int getItemCount() {
return quotes.size();
}
public class QuotesViewHolder extends RecyclerView.ViewHolder {
TextView txtQuote;
LinearLayout quoteContainer;
public QuotesViewHolder(@NonNull View itemView) {
super(itemView);
txtQuote = itemView.findViewById(R.id.txtQuote);
quoteContainer = itemView.findViewById(R.id.quoteContainer);
}
}
}
MainActivity
publi c класс MainActivity расширяет AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView quoteList = findViewById(R.id.quoteList);
quoteList.setLayoutManager(new LinearLayoutManager(this ));
quoteList.setAdapter(new QuotesAdapter(getQuotes(), this));
}
private List<String> getQuotes(){
List<String> quotes = new ArrayList<>();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(this.getAssets().open("quotes.txt"), "UTF-8"));
String line;
while ((line = bufferedReader.readLine()) != null){
quotes.add(line);
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
if(bufferedReader != null){
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return quotes;
}
}