I want add a onclicklistner
in my viewholder
and I don't know how to add it inside the view holder,when the user click the item it should pass the value
I want to fix a onclicklisner
inside usersviewholder
,i don't know how so i need some experts help.
my code is given below
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String searchText = editText1.getText().toString();
firebaseUserSearch(searchText);
}
});
}
private void firebaseUserSearch(String searchText) {
// Query firebaseSearchQuery = reference.orderByChild("title").startAt("\uf8ff" + searchText).endAt(searchText + "\uf8ff");
String searchedText = searchText.trim();
Query firebaseSearchQuery = reference.orderByChild("title").startAt(searchedText ).endAt(searchedText + "\uf8ff");
FirebaseRecyclerOptions<Profile> options =
new FirebaseRecyclerOptions.Builder<Profile>()
.setQuery(firebaseSearchQuery, Profile.class)
.setLifecycleOwner(this)
.build();
FirebaseRecyclerAdapter firebaseRecyclerAdapter= new FirebaseRecyclerAdapter<Profile, MainActivity.UsersViewHolder>(options) {
@NonNull
@Override
public MainActivity.UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MainActivity.UsersViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent,false));
}
@Override
protected void onBindViewHolder(@NonNull MainActivity.UsersViewHolder holder, int position, @NonNull Profile model) {
holder.setDetails(getApplicationContext(), model.getCon(), model.getTitle(), model.getDesc(), model.getImage());
}
};recyclerView.setAdapter(firebaseRecyclerAdapter);
}
public static class UsersViewHolder extends RecyclerView.ViewHolder{
View mView;
TextView title, desc;
ImageView image;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(Context ctx, String userName, String userStatus, String userImage){
title = (TextView) mView.findViewById(R.id.title);
desc = (TextView) mView.findViewById(R.id.desc);
image = (ImageView) mView.findViewById(R.id.image);
title.setText(userName);
desc.setText(userStatus);
Glide.with(ctx).load(userImage).into(image);
}
}
i want a intent in the onclick like
Uri webpage = Uri.parse(profiles.get(getAdapterPosition()).getDesc());
Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(webIntent, 0);
boolean isIntentSafe = activities.size() > 0;
if (isIntentSafe) {
context.startActivity(webIntent);
}
else
{
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/search?q=google&hl=en")));
}
}
You have to implements View.OnClickListener
and setOnClickListener
in per item that you want to click on it:
public static class UsersViewHolder extends RecyclerView.ViewHolder implements
View.OnClickListener{
View mView;
TextView title, desc;
ImageView image;
public UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(Context ctx, String userName, String userStatus, String userImage){
title = (TextView) mView.findViewById(R.id.title);
desc = (TextView) mView.findViewById(R.id.desc);
image = (ImageView) mView.findViewById(R.id.image);
title.setText(userName);
desc.setText(userStatus);
Glide.with(ctx).load(userImage).into(image);
mView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//you can pass data to everywhere with callback here
}
}