Can't figure out why My Onclick method doesn't seem to do anything

58 Views Asked by At

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

0

There are 0 best solutions below