Невозможно получить значения из RecyclerView, Recyclerview заполняется через SQlite DB - PullRequest
0 голосов
/ 20 июня 2019

В основном нам нужно получить электронное письмо от recyclerview

Мы попытались добавить onClickListener в TextView в RecyclerView, но когда в RecyclerView имеется более одной записи, мы не можем получить значение.

Можно ли как-то сохранить значения в переменных до заполнения RecyclerView и передачи значений в другое действие?

Я пытался получить значения из TextView в RecyclerView, но я всегда показываю текст в первой строке

Намерение не работает в классе Adapter, потому что это не действие

ArrayList<ModelClass> objModelClassArrayList;

public DatabaseRecyclerAdapter(ArrayList<ModelClass> objModelClassArrayList) {
    this.objModelClassArrayList = objModelClassArrayList;
}

@NonNull
@Override
public DatabaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
    View singleRow= LayoutInflater.from(parent.getContext()).inflate(R.layout.single_row,parent,false);
    return new DatabaseViewHolder(singleRow);

}

@Override
public void onBindViewHolder(@NonNull DatabaseViewHolder holder, int position)
{
    ModelClass objModelClass=objModelClassArrayList.get(position);
    holder.userNameTV.setText(objModelClass.getName());
    holder.userLocation.setText(objModelClass.getAddress());
    String e1=objModelClass.getEmail();
    holder.userEmail.setText(e1);


}


@Override
public int getItemCount() {
    return objModelClassArrayList.size();
}

public static class DatabaseViewHolder extends RecyclerView.ViewHolder
{

    TextView userNameTV,userLocation,userEmail;
    public DatabaseViewHolder(@NonNull View itemView)
    {
        super(itemView);
        userNameTV=itemView.findViewById(R.id.sr_userNameTV);
        userLocation=itemView.findViewById(R.id.sr_location);
        userEmail=itemView.findViewById(R.id.sr_email);
    }
}

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

1 Ответ

0 голосов
/ 20 июня 2019

Во-первых, необходимо передать контекст в конструкторе адаптера, который может помочь вам открыть другое действие из адаптера recyclerView. Затем внутри BindViewHolder вы можете создать clickListener, как показано ниже,

         holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                     String emailText=holder.userEmail.getText().trim();
                     Intent intent=new Intent(context,activity_name_you _want_ to_open);
                     intent.setExtra("emailName",emailText);
                     (name of activity contains RV)context.startActivity(intent)
                     //Note: here context needs to be typecasted to activity from which we want to open new activity.

                    }
                });
...