gpt4 book ai didi

android - 需要帮助了解 Cardview 项目点击

转载 作者:行者123 更新时间:2023-11-30 04:58:57 33 4
gpt4 key购买 nike

首先,我必须告诉你,我在 Android 编程方面的经验非常有限。基本上,我拿起一本书尝试自学,但收效甚微。 :(简而言之,我希望能够在单击时使用 cardview 项目的详细信息打开第二个 Activity

我在网上广泛搜索以查找信息或有关从 recyclerview/cardview 布局中选择单个项目的教程,但没有找到任何我可以使用的东西。

目前,我的 cardview xml (android:onClick="displaycard") 中有一个 onclick,它将运行 java 类中的 displaycard() 方法。

这很好用,但只会将我带到通用的单个项目 Activity 。我可以使用搜索字段和按钮在 Activity 中按 itemID 搜索数据库一次,但我想通过 cardview 按钮单击填充 Activity

这是带有 onclick 项的卡片 View ...

    <androidx.cardview.widget.CardView
android:id="@+id/CardItem"
android:layout_marginBottom="@dimen/cardview_compat_inset_shadow"
android:layout_margin="@dimen/cardview_compat_inset_shadow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="#0066ff"
android:clickable="true"
android:focusable="true"
android:onClick="displaycard"
app:cardCornerRadius="12dp"
app:cardElevation="30dp"
android:outlineSpotShadowColor="@color/colorPrimaryDark">

下面是打开通用activity的方法。通用表示没有填充数据库内容的 Activity

public void displaycard(View view) {
Intent defView = new Intent(SecondActivity.this,DisplayIndividual.class);
// this is where i pass the search parameters to DisplayIndividual.java (search parameter is Tk-128, putExtra passes it to the activity)
// I want to be able to pass the ID of the card that was clicked
String strSearch = "Tk-128";
defView.putExtra("STRING_2_Search", strSearch);
startActivity(defView);
}

每个卡片 View 都有一个带有我要搜索的 ID 的 TextView 。我想使用 putExtra 将 'android:id="@+id/ConfinedSpaceID"' 传递到打开的 Activity 中。在上面的示例中,我想将值“Tk-128”替换为单击的 cardview 项目的 android:id="@+id/ConfinedSpaceID"的值。

<TextView
android:id="@+id/ConfinedSpaceID"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="Confined Space ID"
android:textColor="@android:color/white"
android:textSize="22sp"
android:textStyle="bold" />

不确定我是否已经清楚地解释了自己...希望我提供了足够的信息来重现问题

最佳答案

如果您的卡片 View 只有一个 TextView,或者如果您的值始终在第一个 TextView 上,这应该可行:

public void displaycard(CardView view) {
String strSearch;
for(int i=0;i<view.getChildCount();i++){
View maybeTextView = view.getChildAt(i);
if(maybeTextView instanceof TextView){
strSearch=((TextView)maybeTextView).getText().toString();
break;
}

}
Intent defView = new Intent(SecondActivity.this,DisplayIndividual.class);

defView.putExtra("STRING_2_Search", strSearch);
startActivity(defView);
}

它的作用是循环遍历 CardView 上的所有 subview ,当它找到一个 TextView 时,它会将它的值保存在一个变量上,然后您可以像以前一样使用它来传递给您的 Intent 。请注意,我将函数的参数从 public void displaycard(View view) 更改为 public void displaycard(CardView view)

关于android - 需要帮助了解 Cardview 项目点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575685/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com