【发布时间】: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