Android 获取项目在列表中的位置

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

我要在点击事件中获得RecyclerView位置:

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;我强烈建议学习一些Java
stringpid=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.