问题描述
我有一个带有 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 上添加了一个十字,目的是当用户单击该十字时,过滤器消失。在这里您可以看到布局的外观:
如何检测何时点击了十字?十字是 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...
}
}
}
这是持有人