Can anyone please tell me why clicking on my RecyclerView items doesn't do anything ? I've tried everything This is my adapter class
public class MessagePosAdapter extends RecyclerView.Adapter<MessagePosAdapter.MessViewHolder> {
private Context context;
private List<MessUploadModel> messuploadModels;
public MessagePosAdapter(Context context, List<MessUploadModel> messuploads) {
this.messuploadModels = messuploads;
this.context = context;
}
@NonNull
@Override
public MessViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.messagesrecv, viewGroup, false);
MessagePosAdapter.MessViewHolder viewHolder = new MessagePosAdapter.MessViewHolder(v, context);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MessagePosAdapter.MessViewHolder messViewHolder, int i) {
MessUploadModel messupload = messuploadModels.get(i);
messViewHolder.nameTextV.setText(messupload.getSender_username());
messViewHolder.titTextV.setText(messupload.getPost_subj());
messViewHolder.temps.setText(DateUtils.getRelativeTimeSpanString(messupload.getComment_time(),
System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS));
}
@Override
public int getItemCount() {
return messuploadModels.size();
}
public class MessViewHolder extends RecyclerView.ViewHolder {
public TextView nameTextV, titTextV, temps;
/*public ImageView postImageV;
public CircleImageView prof_image;*/
public MessViewHolder(View itemView, Context context) {
super(itemView);
nameTextV = itemView.findViewById(R.id.TextViewNotName);
titTextV = itemView.findViewById(R.id.TextViewNotTitle);
temps = itemView.findViewById(R.id.TextViewNotTime);
/*postImageV = itemView.findViewById(R.id.ImageViewPost);
prof_image = itemView.findViewById(R.id.ImageViewProfile);*/
}
}
}
Over here is my ViewHolder public class MessViewHolder extends RecyclerView.ViewHolder{
View mView;
public static final String PREFS_NAME = "MyApp_Settings";
public MessViewHolder(View itemView) {
super(itemView);
mView = itemView;
//item click
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mClickListener.onItemClick(view, getAdapterPosition());
}
});
//item long click
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
mClickListener.onItemLongClick(view, getAdapterPosition());
return true;
}
});
}
public void setMessages(Context context, String notname, String nottit, long time){
//Views
TextView NameTv = mView.findViewById(R.id.TextViewNotName);
TextView NotTitTv = mView.findViewById(R.id.TextViewNotTitle);
TextView TimeTv = mView.findViewById(R.id.TextViewNotTime);
/*ImageView ImageViewPost = mView.findViewById(R.id.ImageViewPost);
CircleImageView circleImageView = mView.findViewById(R.id.ImageViewProfile);
Button available = mView.findViewById(R.id.Avail);
Button privmess = mView.findViewById(R.id.PrivMes);*/
//set data to views
NameTv.setText(notname);
NotTitTv.setText(nottit);
TimeTv.setText((DateUtils.getRelativeTimeSpanString(time,
System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS)));
//Glide.with(context).load(imlink).into(ImageViewPost);
/*if (!imlinkprof.isEmpty())
{
Glide.with(context).load(imlinkprof).into(circleImageView);
}*/
}
private MessViewHolder.ClickListener mClickListener;
//interface to send callbacks
public interface ClickListener{
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public void setOnClickListener(MessViewHolder.ClickListener clickListener){
mClickListener = clickListener;
}
}
This is my main fragment
public static MessageFragment newInstance(String param1, String param2) {
MessageFragment fragment = new MessageFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_message, container, false);
mSharedPref = Objects.requireNonNull(getActivity()).getSharedPreferences("SortSettings", MODE_PRIVATE);
String mSorting = mSharedPref.getString("Sort", "newest"); //where if no settings is selected newest will be default
if (mSorting.equals("newest")) {
mLayoutManager = new LinearLayoutManager(getContext());
//this will load the items from bottom means newest first
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
} else if (mSorting.equals("oldest")) {
mLayoutManager = new LinearLayoutManager(getContext());
//this will load the items from bottom means oldest first
mLayoutManager.setReverseLayout(false);
mLayoutManager.setStackFromEnd(false);
}
//RecyclerView
mRecyclerView = view.findViewById(R.id.notrecyclerView);
mRecyclerView.setHasFixedSize(true);
progressbarhor = view.findViewById(R.id.progressbarhor);
SearchView searchView = view.findViewById(R.id.searchView);
//set layout as LinearLayout
mRecyclerView.setLayoutManager(mLayoutManager);
//send Query to FirebaseDatabase
mFirebaseDatabase = FirebaseDatabase.getInstance();
//String ImageUploadId = databaseReference.push().getKey();
databaseReference = mFirebaseDatabase.getReference("Comments");
MessagePosAdapter messagePosAdapter = new MessagePosAdapter(getActivity(), messuploadModels);
mRecyclerView.setAdapter(messagePosAdapter);
SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
/*String Name = sharedPreferences.getString("nom", "");
String Email = sharedPreferences.getString("email", "");
String Ville = sharedPreferences.getString("ville", "");*/
String Profile = sharedPreferences.getString("profile", "");
return view;
}
@Override
public void onStart() {
super.onStart();
progressbarhor.setVisibility(View.VISIBLE);
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid = Objects.requireNonNull(user).getUid();
Query firebaseSearchQuery = databaseReference.orderByChild("receiver_id").equalTo(userid);
//if(databaseReference.child("sender_id").equalTo(userid)) { }
FirebaseRecyclerAdapter<MessUploadModel, MessViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<MessUploadModel, MessViewHolder>(
MessUploadModel.class,
R.layout.messagesrecv,
MessViewHolder.class,
firebaseSearchQuery
)
{
@Override
protected void populateViewHolder(MessViewHolder messviewHolder, MessUploadModel messmodel, int position) {
final String key=getRef(position).getKey();
messviewHolder.setMessages(getActivity(), messmodel.getSender_username(), messmodel.getPost_subj(), messmodel.getComment_time());
progressbarhor.setVisibility(View.GONE);
}
@NonNull
@Override
public MessViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final MessViewHolder messviewHolder = super.onCreateViewHolder(parent, viewType);
messviewHolder.setOnClickListener(new MessViewHolder.ClickListener() {
@Override
public void onItemClick(View view, int position) {
//Views
//RelativeLayout addcomm = view.findViewById(R.id.com);
//get data from views
/*String mTitle = mTitleTv.getText().toString();
String mDesc = mDescTv.getText().toString();
Drawable mDrawable = mImageView.getDrawable();*/
//Bitmap mBitmap = ((BitmapDrawable) mDrawable).getBitmap();
//pass this data to new activity
/*Intent intent = new Intent(view.getContext(), PostDetailActivity.class);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
intent.putExtra("image", bytes); //put bitmap image as array of bytes
intent.putExtra("title", mTitle); // put title
intent.putExtra("description", mDesc); //put description*/
Intent intent = new Intent(getActivity(), Post_details.class);
final String key=getRef(position).getKey();
intent.putExtra("key", key);
startActivity(intent); //start activity
Toast.makeText(getActivity(), position + key, Toast.LENGTH_LONG).show();
}
@Override
public void onItemLongClick(View view, int position) {
//TODO do your own implementaion on long item click
}
});
return messviewHolder;
}
};
//set adapter to recyclerview
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
}
Everything else works fine. Only nothing happens when I click on items. I've used this method before on numerous occasions and it worked fine. I cannot, for the life of me, figure why it won't work here. Any help would be greatly appreciated