Как поставить listener на элемент в RecyclerView?
Я в своем приложении использую RecyclerViewи адаптер к нему, кликая на строку из листа я перехожу на второй экран. В listview входит 2 textView. Как поставить listener на 1 из этих textView, чтобы я не переходила на 2 экран, а просто меняла текст в этом textview?
Я пыталась установить слушатель таким образом, но компилятор выдает ошибку
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener) on a null object reference
TextView txt=(TextView) findViewById(R.id.circlular_checkbox);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
Метод, с помощью которого я заполняю RecyclerView:
public void initRecycleView() {
habitInfoList = databaseHandler.getAllHabits();
recyclerView = findViewById(R.id.recycleViewMain);
layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
adapter = new Adapter(habitInfoList, this);
recyclerView.setAdapter(adapter);
}
Класс адаптера:
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private List<HabitInfo> habitInfoList;
String title;
private OnAdapterListener onAdapterListener;
public Adapter(List<HabitInfo> habitInfoList, OnAdapterListener onAdapterListener) {
this.habitInfoList = habitInfoList;
this.onAdapterListener=onAdapterListener;
}
@NonNull
@Override
public Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout_design, parent, false);
return new ViewHolder(view, onAdapterListener);
}
@Override
public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
title = habitInfoList.get(position).getTitle();
holder.setData(title);
}
@Override
public int getItemCount() {
return habitInfoList.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener{
private TextView textView, checbox;
OnAdapterListener onAdapterListener;
// textview , на который я хочу поставить слушатель
private CheckBox box;
public ViewHolder(@NonNull View itemView, OnAdapterListener onAdapterListener) {
super(itemView);
textView = itemView.findViewById(R.id.txtHabitInRelativeLay);
checbox =itemView.findViewById(R.id.circlular_checkbox);
itemView.setOnClickListener(this);
this.onAdapterListener = onAdapterListener;
itemView.setOnLongClickListener(this);
}
public void setData(String title) {
textView.setText(title);
}
@Override
public void onClick(View view) {
onAdapterListener.onAdapterClick(getAdapterPosition());
}
@Override
public boolean onLongClick(View view) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
if (onAdapterListener != null) {
onAdapterListener.onAdapterLongClick(position);
}
}
return false;
}
}
public interface OnAdapterListener {
void onAdapterClick(int position);
void onAdapterLongClick(int position);
}
}
Сам текствиев
<TextView
android:id="@+id/circlular_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@drawable/circle"
android:gravity="center"
android:text="12"
android:textSize="20dp" />
