2015-02-07 190 views
-1

我有一个卡片视图,每张卡片上都有一个按钮。我试图在用户点击按钮时获得持有按钮的卡的位置。卡片视图上的Android按钮,点击卡片视图的位置

我有一个从RecyclerView.Adapter延伸,并实现以下的方法适配器...

public void onBindViewHolder(MovieImageViewHolder movieImageViewHolder, int i) { 
    Movie movieItem = mMovieList.get(i); 

    movieImageViewHolder.details.setTag(i); 
    movieImageViewHolder.details.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      position = (Integer) v.getTag(); 
     } 
    }); 
} 

这工作成功地,当我按卡上的1键,位置等于1,当我按下按钮在卡4上,位置等于4.

问题是,如何将此值(位置)从适配器中取出并重新插入到活动中,以便我可以使用它?或者我甚至需要这样做?我试图创建一个新的意图,但不认为应该从适配器完成?

我试图创建变量位置的吸气剂,并呼吁与

public void buttonClick(View view) { 
    int position = adapter.getPosition(); 
    Log.d(TAG, "Button Clicked::- " + String.valueOf(position)); 
} 

主要按钮操作使用

android:onClick="buttonClick" 

在XML,但点击该按钮时没有任何反应,我相信这是因为适配器中的O​​nClick方法被解雇了?

编辑:

好像我已经取得了一些进展。制定了,我可以设置标签在适配器

movieImageViewHolder.btn_details.setTag(i); 

然后得到那个标签回到我的onClick法.getTag();

现在唯一的事情是标签似乎为零的第一个元素,然后零为第二个元素,然后开始在第三个......任何理由,这将是什么?

+0

你得到'按钮点击:'在日志? – 2015-02-07 06:25:36

+0

@ρяσѕρєяK不,因此我的评论,如果它只是从适配器调用而不是。 – 2015-02-07 06:26:56

+0

在哪个Button中添加'buttonClick'监听器,以及何时想从适配器中获取'position'? – 2015-02-07 06:27:28

回答

1

这其实很简单,也是人们面对的一个非常普遍的“问题”。我确定了我无法从适配器创建活动的道路,事实上这正是我应该尝试做的。

movieImageViewHolder.details.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View v) { 
      Integer taggedPosition = (Integer) v.getTag(); 
      Intent intent = new Intent(mContext, ViewMovieDetailsActivity.class); 
      intent.putExtra(SearchMovie.MOVIE_TRANSFER, getMovie(taggedPosition)); 
      v.getContext().startActivity(intent); 
     } 

    }); 

正确地开始正确的活动。