recyclerview textview单击获取post_id? [英] recyclerview textview click get post_id?
本文介绍了recyclerview textview单击获取post_id?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的回收站视图:
I have a recyclerview like this:
Name
image
Publisher
post_id textview with ID value hidden
Like unlike(invisible)
Name
image
Publisher
post_id textview with ID value hidden
Like unlike(invivible)
...
当某人单击like时,它将变为不可见,而与众不同的textview将可见.
When someone click in like, it will become invisible and the unlike textview will be visible.
问题是,我需要将帖子ID值传递给该用户想要的.PHP.
The problem is, I need to pass the post id value to .PHP that this user want to like.
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
//Imageloader to load image
private ImageLoader imageLoader;
private final Context context;
//List to store all posts
List<Posts> Posts;
//Constructor of this class
public CardAdapter(List<Posts> Post, Context context){
super();
//Getting all
this.Posts = Post;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.posts_list, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
//Getting the particular item from the list
Posts post = Posts.get(position);
//Loading image from url
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
//Showing data on the views
holder.imageView.setImageUrl(post.getImageUrl(), imageLoader);
holder.textViewName.setText(post.getName());
holder.textViewPublisher.setText(post.getPublisher());
holder.textViewID.setText(post.getPid());
holder.setIsRecyclable(false);
}
@Override
public int getItemCount() {
return Posts.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
//Views
public NetworkImageView imageView;
public TextView textViewName;
public TextView textViewPublisher;
public TextView textViewID;
//Initializing Views
public ViewHolder(View itemView) {
super(itemView);
imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher);
textViewID = (TextView) itemView.findViewById(R.id.textViewID);
textViewName.setClickable(true);
textViewName.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//
}
}
}
因此,我有很多喜欢和不同的地方,有许多post_id值...如何在用户单击LIKE的同一张卡片视图中获取ID值?
So I have many likes and unlikes, many post_id values... how can I get the ID value in the same cardview that user has clicked in LIKE?
推荐答案
您必须使用回调设计模式.
You have to use callback design pattern.
创建界面
public interface OnItemClickListener {
//view on which user clicked and the post_id for which you want to
//some specific action
void onItemClick(View itemView, int post_id);
}
现在创建如下所示的适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
// ...
/***** Creating OnItemClickListener *****/
// Define listener member variable
private OnItemClickListener listener;
// Define the method that allows the parent activity or fragment to define the listener
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView tvName;
public TextView tvHometown;
public ViewHolder(final View itemView) {
super(itemView);
this.tvName = (TextView) itemView.findViewById(R.id.tvName);
this.tvHometown = (TextView) itemView.findViewById(R.id.tvHometown);
// Setup the click listener
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Triggers click upwards to the adapter on click
if (listener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
// Assuming positionList contains list of post id's
int post_id = positionList.get(position);
listener.onItemClick(itemView, post_id);
}
}
}
});
}
}
// ...
}
根据活动或片段设置适配器
Set Adapter from activity or fragment
MyAdapter adapter = .....;
adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int post_id) {
Toast.makeText(MyActivity.this, post_id + " was clicked!", Toast.LENGTH_SHORT).show();
}
});
这篇关于recyclerview textview单击获取post_id?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文