【问题标题】:Click on a specific item of a CardView in GridLayout单击 GridLayout 中 CardView 的特定项目
【发布时间】:2021-07-19 03:31:34
【问题描述】:

我有一个带有 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 的一部分,点击它的那一刻,下一个活动被打开。

谢谢

【问题讨论】:

  • 你能给我完整的代码吗?因为否则,将 id 分配给十字按钮然后在其上设置 onClickListener 似乎很简单
  • 不过,您的用例是什么,首先在单击交叉时关闭卡片视图,然后启动活动,或者单击交叉时它不应该启动活动而只是关闭卡片视图?
  • @Ritesh 当点击十字架时它应该关闭卡片视图并且不启动活动。
  • @LauraGalera 在这种情况下,您需要有不同的侦听器进行交叉 - 您只需解散其他侦听器即可启动新活动。到目前为止,我假设 cardview 侦听器由整个视图组成,包括交叉。
  • @Narendra_Nath 总共有 5 个十字架,我只展示了一个。我猜从你所说的你想在方法 onCreate() 上为它们中的每一个设置一个 ClickListener。但是当你点击十字架时,活动会启动吗?我想知道是否可以编辑 setSingleEvent() 来检测是否点击了十字。

标签: java android kotlin android-activity cardview


【解决方案1】:

使用回收器视图并实现 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...
 }

    }
}

这是持有者

【讨论】:

  • 我不是在寻找 RecyclerView,因为我的过滤器是有限的,我只有 5 个。将一个用于产品或类别是有意义的,但不适用于过滤器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多