我有一个用于cardview的xml文件,可以在我的主要android类的recyclerview中使用。此cardview包含一个按钮,用于从列表中删除cardview。我遇到的问题是recyclerview中的所有按钮都有相同的onClick值,我不知道如何区分它们。
这是我在cardview xml中的按钮:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"
android:id="@+id/btnDelete"
android:onClick="DeleteCard"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
在我的主课程中,我有一个函数DeleteCard,只要按下任何删除按钮,它就会运行。我的cardview中也有一个TextView,我想知道当我按下删除按钮时是否有可能以某种方式检索TextView中的文本,所以我知道要删除哪一个。
这是我的onBindViewHolder:
public void onBindViewHolder(TimeViewHolder personViewHolder, int i) {
int min = (int)(times.get(i).time / (60 * 1000));
int remaining = (int)(times.get(i).time % (60 * 1000));
int sec = remaining / 1000;
remaining = remaining % (1000);
int mill = (remaining%1000)/10;
DecimalFormat df = new DecimalFormat("00");
personViewHolder.time.setText(min + ":" + df.format(sec) + "." + mill);
personViewHolder.date.setText(times.get(i).date);
}
我希望从日期获取文本并将其用作参数以在SharedPreferences中删除该键。以下是按下删除按钮时运行的方法:
public void DeleteCard(View view){
SharedPreferences.Editor editor = history.edit();
editor.remove("Date Here");
editor.commit();
}
答案 0 :(得分:0)
在onBindViewHolder上实现onclick on不在xml中,并为此按钮添加位置或唯一标识符的标记。因此,当您单击然后点击内部onclick提取标签时,您需要查看对象和perfrom操作。
答案 1 :(得分:0)
视图传递给DeleteCard
方法,因此您可以使用view.getId()
获取视图的ID,然后您可以像这样切换ID:
public void DeleteCard(View view) {
switch(view.getId()){
case R.id.buttonDelete:
....
break;
case R.id.buttonAdd:
...
break;
}
}
答案 2 :(得分:0)
从XML中删除onClick()
,并在onCreateViewHolder(..)
方法中添加点击侦听器。可以从ViewHolder类中的getPosition()
方法检索位置,该方法现在已弃用。
您可以使用getAdapterPosition()
或getLayoutPosition()
获取排名。