繁体   English   中英

如何确定从Android中的按钮列表中按下了哪个按钮?

[英]How do I determine which button was pressed from a list of buttons in Android?

我在我的主要android类的recyclerview中有一个用于cardview的xml文件。 该卡片视图包含一个按钮,该按钮将用于从列表中删除卡片视图。 我遇到的问题是,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,我想知道是否有可能在按Delete键时以某种方式检索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();
}

在onBindViewHolder中而不是在xml中实现onclick on Button,并向该按钮添加位置标记或唯一标识符。 因此,当您单击然后在onclick内部单击时,将从所需的视图对象和perfrom操作中提取标签。

视图将传递给DeleteCard方法,因此您可以使用view.getId()获取视图的ID,然后可以像这样切换ID:

 public void DeleteCard(View view) {
    switch(view.getId()){

        case R.id.buttonDelete:
        ....
        break;

        case R.id.buttonAdd:
        ...
        break;



    }
}

从XML中删除onClick() ,然后在onCreateViewHolder(..)方法中添加单击侦听器。 可以从现在不推荐使用的ViewHolder类的getPosition()方法中检索位置。

您可以使用getAdapterPosition()getLayoutPosition()获取位置。

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ViewHolder.html#getPosition()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM