Android 获取项目在列表中的位置
我要在点击事件中获得RecyclerView位置:Android 获取项目在列表中的位置,android,android-recyclerview,Android,Android Recyclerview,我要在点击事件中获得RecyclerView位置: int position = getAdapterPosition(); 此函数用于在以下位置返回列表: List<Posts> Posts; public Posts getItem(int position) { return Posts.get(position); } 我想知道的是如何从我想要的位置得到这个idp值 我的代码: public class CardAdapter e
int position = getAdapterPosition();
此函数用于在以下位置返回列表:
List<Posts> Posts;
public Posts getItem(int position) {
return Posts.get(position);
}
我想知道的是如何从我想要的位置得到这个idp值
我的代码:
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;
public Posts getItem(int position) {
return Posts.get(position);
}
//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.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;
//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);
textViewName.setClickable(true);
textViewName.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
// what to do next?
}
}
}
公共类CardAdapter扩展了RecyclerView.Adapter{
//Imageloader以加载图像
私有图像加载器;
私人最终语境;
//用于存储所有帖子的列表
列出员额;
公共职位getItem(内部职位){
返回岗位。获取(职位);
}
//这个类的构造函数
公共卡适配器(列表帖子、上下文){
超级();
//获得全部
这个.Posts=Post;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.posts\u列表,父级,假);
视窗夹持器视窗夹持器=新视窗夹持器(v);
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
//从列表中获取特定项
Posts post=Posts.get(位置);
//从url加载图像
imageLoader=CustomVolleyRequest.getInstance(上下文).getImageLoader();
//显示视图上的数据
holder.imageView.setImageUrl(post.getImageUrl(),imageLoader);
holder.textViewName.setText(post.getName());
holder.textViewPublisher.setText(post.getPublisher());
holder.setIsRecyclable(假);
}
@凌驾
public int getItemCount(){
返回后。大小();
}
类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
//观点
公共网络图像视图;
公共文本视图文本视图名称;
公共文本视图文本视图发布者;
//初始化视图
公共视图持有者(视图项视图){
超级(项目视图);
imageView=(NetworkImageView)itemView.findViewById(R.id.imageViewHero);
textViewName=(TextView)itemView.findViewById(R.id.textViewName);
textViewPublisher=(TextView)itemView.findViewById(R.id.textViewPublisher);
textViewName.setClickable(真);
textViewName.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
//下一步怎么办?
}
}
}
嗯。。。看起来很简单
int position = getAdapterPosition();
Post p = getItem(position);
你真的需要这个职位吗 持票人可以持票
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
// Data
public Post post;
//Views
public NetworkImageView imageView;
及
然后,只需使用
ViewHolder.this.post
从onClick中选择您之前的答案,即可满足您的要求。。。那是什么问题?非常感谢你!如果可能的话,你能给我举一个关于ViewHolder.this.post
的更好的例子吗?如何在字符串中获取所需的id?再次感谢你@cricket_007;我强烈建议学习一些Javastringpid=ViewHolder.this.post.getPid()
我建议不要通过Android代码学习它。这是我的主要观点。
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
// Data
public Post post;
//Views
public NetworkImageView imageView;
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
//Getting the particular item from the list
Posts post = Posts.get(position); // or use getItem(position);
holder.post = post;
// You could even make a holder.position variable... your choice.