【发布时间】:2015-02-07 05:45:01
【问题描述】:
我有一个卡片视图,每张卡片上都有一个按钮。当用户单击按钮时,我正在尝试获取持有按钮的卡片的位置。
我有一个从 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 方法中获取该标签;
现在唯一的问题是第一个元素的标签似乎为零,然后第二个元素为零,然后第三个元素从一个开始......有什么理由吗?
【问题讨论】:
-
您的日志中有
Button Clicked:吗? -
@ρяσѕρєяK 不,因此我的评论是,如果它只是从适配器调用。
-
您在哪个 Button 中添加
buttonClick侦听器以及何时从适配器中获取position? -
@ρяσѕρєяK 我不确定我是否理解你的问题......
-
我的意思是你在哪个 Button 中添加
buttonClickonClick 方法?当你想在Activity中获得position的点击按钮时
标签: android android-listview android-cardview android-recyclerview