gpt4 book ai didi

Android Recyclerview 多个onclick项目

转载 作者:行者123 更新时间:2023-11-29 20:54:08 29 4
gpt4 key购买 nike

我正在尝试有一个 recyclerview,其中每个项目都是一个简单的 TextView + Checkbox

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/title"
android:layout_width="0dp"
android:layout_weight="5"
android:layout_height="wrap_content"
/>
<CheckBox
android:id="@+id/chk"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>

我想要实现的是(取消)选中复选框(如果它被单击)。但是,如果单击了 TextView ,则对整个项目执行波纹动画并开始 fragment 过渡。

我找不到在线示例,我找到的最接近的是 RecyclerView onClick

不过,我设法让 onclick 起作用,在代码中

@Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildPosition(childView));
return true;
}
return false;

我遇到的问题是返回的 childView 是线性布局,而不是 TextView 或复选框。因此,我无法确定点击是在 TextView 上还是在复选框上完成的。

有什么我想念的吗?理想情况下,如果有人有一个如何实现它的工作示例,那就太好了。

谢谢。

最佳答案

给你:

您的列表项 xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="?attr/selectableItemBackground"
android:layout_height="72dp">

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:text="My Text"
android:layout_gravity="left|center_vertical"
android:paddingLeft="16dp"
android:layout_height="wrap_content" />

<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_gravity="right|center_vertical" />

(我使用了 FrameLayout 作为根,但 LinearLayout 应该也可以。)

RecyclerViewAdapter 中使用如下内容:

            @Override
public YourViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item, viewGroup, false);

itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.w("Test", "Parent clicked");
}
});
return new YourViewHolder(itemView);

}

@Override
public void onBindViewHolder(YourViewHolder viewHolder, int i) {

viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.w("Test", "Checkbox clicked");
}
});
}

关于Android Recyclerview 多个onclick项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254965/

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