java - FrameLayout onClick 事件不起作用

标签 java android layout

在我的应用中有这个布局

<FrameLayout
                        android:gravity="center"
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:clickable="true"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentTop="true"
                        android:id="@+id/avatar_layout">
                    <ImageView
                            android:id="@+id/image_view"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"

                            android:background="@drawable/knotable_icon"
                            android:clickable="true"/>
                    <TextView
                            android:id="@+id/char_text_view"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:gravity="center"
                            android:text="@string/character"
                            android:clickable="true"
                            android:textStyle="bold"
                            android:textColor="@color/black"
                            android:textSize="22sp" />
                </FrameLayout>

它实际上是用户的个人资料图片。 我需要为此 FrameLayout 实现 onClick 监听器。

在后台我有 AvatarListAdapter.java

public class AvatarListAdapter extends ArrayAdapter<AvatarUiItem> {
...
private class ViewHolder {
private View.OnClickListener mAvatarClickListener;
}
 private View.OnClickListener mAvatarClickListener;
holder.avatarView=(FrameLayout) convertView.findViewById(R.id.avatar_layout); //inflates FrameLayout here
holder.avatarView.setTag(itemInfo);
                holder.avatarView.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Log.d("tag", "here we are");

                        if (mAvatarClickListener != null) {
                            mAvatarClickListener.onClick(view);
                        }
                    }
                });

然后在主要 Activity 中:

mAdp = new AvatarListAdapter(this, mAvatarUiItemArray, mApp,
                mImageLoader, mDisplayMetrics, mPartCounterNum);

        mListView.setAdapter(mAdp);

        mAdp.setOnAvatarClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Object object = v.getTag();
                if (object instanceof KnoteUiItem) {
                    KnoteUiItem uiItem = (KnoteUiItem) object;

                 Log.d("tag","avatar click");
                }
            }
        });

这里的问题是 OnClick 事件永远不会触发。 真的很感激这方面的一些帮助。

最佳答案

使用 OnItemClickListener

holder.setTag(itemInfo); // Set the tag on the root view rather than the avatarView
.
.
.
.
    OnItemClickListener listener = new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  Object object = v.getTag();
                    if (object instanceof KnoteUiItem) {
                        KnoteUiItem uiItem = (KnoteUiItem) object;

                     Log.d("tag","avatar click");
                    }
                }
            };

     mListView.setOnItemClickListener(listener);

关于java - FrameLayout onClick 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26484487/

相关文章:

java - Applet 需要特定的最低 Java 版本

android - 如何检测 Android 设备是在室内还是室外?

android - 无法在设备 : error for Android 上执行 shell 命令 "getprop,dev.bootcomplete"“

android - 如何获取适合特定大小的 Screen/TextView 的 N 个文本?

java - 扫描条形码时出错 Mobile Vision API?

java - ODF工具包-转换问题

java - 我卡住了,我无法从 JDBC 将数据插入 MySQL 数据库

android - Android Studio 中预建的 C 库

css - 在 CSS 中分层图像 - 可以将 2 个图像放在同一个元素中吗?

JavaFX GridPane 子节点动态调整大小以填充指定区域