Android 卡片视图上的按钮,单击时获取卡片视图的位置
Android button on card view, get position of card view on click
我有一个卡片视图,每张卡片上都有一个按钮。当用户单击按钮时,我正在尝试获取包含按钮的卡片的位置。
我有一个从 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。
问题是,如何将这个值(位置)从适配器中取出并返回到 Activity 以便我可以使用它?或者我什至需要这样做吗?我正在尝试创建一个新的意图,但我认为这不应该通过适配器完成吗?
我试图为可变位置创建一个 getter,并使用
调用主按钮操作
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);
然后使用 .getTag();
在我的 onClick 方法中取回该标签
现在唯一的问题是第一个元素的标签似乎为零,第二个元素的标签为零,第三个元素的标签似乎为 1...为什么会这样?
这其实很简单,也是很普通的"issue"人脸。我被设置为无法从适配器创建 activity 的路径,事实上这正是我应该尝试做的。
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);
}
});
正确启动正确activity。
我有一个卡片视图,每张卡片上都有一个按钮。当用户单击按钮时,我正在尝试获取包含按钮的卡片的位置。
我有一个从 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。
问题是,如何将这个值(位置)从适配器中取出并返回到 Activity 以便我可以使用它?或者我什至需要这样做吗?我正在尝试创建一个新的意图,但我认为这不应该通过适配器完成吗?
我试图为可变位置创建一个 getter,并使用
调用主按钮操作 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);
然后使用 .getTag();
在我的 onClick 方法中取回该标签现在唯一的问题是第一个元素的标签似乎为零,第二个元素的标签为零,第三个元素的标签似乎为 1...为什么会这样?
这其实很简单,也是很普通的"issue"人脸。我被设置为无法从适配器创建 activity 的路径,事实上这正是我应该尝试做的。
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);
}
});
正确启动正确activity。