2017-02-26 61 views
-2

我有這樣得到的click事件的RecyclerView位置項目位置:獲取列表

int position = getAdapterPosition(); 

而這個函數在一個位置返回列表:

List<Posts> Posts; 

    public Posts getItem(int position) { 
     return Posts.get(position); 
    } 
在這個帖子列表

我有:

public String getPid() { 
     return idp; 
    } 

我想知道的是我如何從我想要的位置獲得此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? 

     } 

    } 
} 
+0

你前面的回答做你所要求的確切事...那裏有什麼問題? http://stackoverflow.com/questions/42469494/recyclerview-textview-click-get-post-id –

回答

1

唔......看起來非常簡單...

int position = getAdapterPosition(); 
Post p = getItem(position); 

你真的需要的位置有關係嗎?

的ViewHolder可以擔任此職...

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. 

然後,只需使用ViewHolder.this.post從的onClick

+0

非常感謝你!如果可能的話,你可以給我一個關於'ViewHolder.this.post'的更好的例子嗎?我怎麼能得到我想要的字符串中的ID?再次感謝你! @ cricket_007 –

+0

我強烈建議學習一些Java ......'String pid = ViewHolder.this.post.getPid()' –

+0

我正在學習! ;)非常感謝你 –