卡片视图上的Android按钮,点击卡片视图的位置
问题描述:
我有一个卡片视图,每张卡片上都有一个按钮。我试图在用户点击按钮时获得持有按钮的卡的位置。卡片视图上的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,但点击该按钮时没有任何反应,我相信这是因为适配器中的OnClick方法被解雇了?
编辑:
好像我已经取得了一些进展。制定了,我可以设置标签在适配器
movieImageViewHolder.btn_details.setTag(i);
然后得到那个标签回到我的onClick法.getTag();
现在唯一的事情是标签似乎为零的第一个元素,然后零为第二个元素,然后开始在第三个......任何理由,这将是什么?
答
这其实很简单,也是人们面对的一个非常普遍的“问题”。我确定了我无法从适配器创建活动的道路,事实上这正是我应该尝试做的。
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);
}
});
正确地开始正确的活动。
你得到'按钮点击:'在日志? – 2015-02-07 06:25:36
@ρяσѕρєяK不,因此我的评论,如果它只是从适配器调用而不是。 – 2015-02-07 06:26:56
在哪个Button中添加'buttonClick'监听器,以及何时想从适配器中获取'position'? – 2015-02-07 06:27:28