单击 GridLayout 中 CardView 的特定项目

问题描述

我有一个带有 5 个 CardView 的简单 GridLayout。我已经设法根据单击的 CardView 打开不同的活动。代码如下:

//Set an event for each CardView of the GridLayout
    private void setSingleEvent(GridLayout mainGrid){
        //For each Child of the GridLayout that is a CardView
        for(int i = 0; i < mainGrid.getChildCount(); i++){
            if(mainGrid.getChildAt(i) instanceof CardView) {
                CardView cardview = (CardView) mainGrid.getChildAt(i);
                final int index = i;
                cardview.setonClickListener(v -> {
                    if(index == 0){ //if the Card Category was clicked create event FilterCategory
                        Intent intent = new Intent(Filter.this,FilterCategory.class);
                        startActivityForResult(intent,0);
                        //AND GOES ON...
     }

问题是我在 CardView 上添加一个十字,目的是当用户单击该十字时,过滤器消失。在这里您可以看到布局的外观:

enter image description here

如何检测何时点击了十字?十字是 CardView 的一部分,在你点击它的那一刻,下一个活动被打开。

谢谢

解决方法

使用recicler视图并实现View.OnClickListener

public class YourViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    private TextView categoryText;
    private TextView categorinameText;
    private ImageView cellImagen;
    private int pocision;

    public ConsultaSalvadaViewHolder(@NonNull View itemView) {
        super(itemView);

        itemView.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
            if(index == 0){ //if the Card Category was clicked create event   FilterCategory
                    Intent intent = new Intent(Filter.this,FilterCategory.class);
                    startActivityForResult(intent,0);
                    //AND GOES ON...
 }

    }
}

这是持有人

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...