Передача данных из представления Recycler в новое действие в приложении Quote, новое действие открывается, но данные не поступают - PullRequest
0 голосов
/ 12 июля 2020

Я создаю приложение цитаты, в котором цитата будет внутри представления ресайклера, и при щелчке будет отображаться та же цитата, на которой щелкнул пользователь. Когда я пытался использовать прослушиватель щелчков внутри держателя представления в классе адаптера, активность приложения изменилась на другое, но данные не отображаются.

 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;
}

}

1 Ответ

0 голосов
/ 12 июля 2020

На вашем itemClick в адаптере используйте пакет для передачи данных

Intent intent = new Intent(context, NewActivity.class);

intent.putExtra ("myKey", AnyValue); startActivity (intent);

Вы можете получить переданные значения следующим образом:

Bundle extras = intent.getExtras(); 

String myString = extras.getString ("myKey");

...