java - GridView OnItemClickListener 没有调用 onItemClick

标签 java android gridview listadapter

我正在尝试为我的 Gridview 中的项目设置一个 OnItemClickListener。由于某种原因,永远不会调用监听器中的 onItemCLick 方法。

设置监听器和适配器:

UsersAdapter usersAdapter = new UsersAdapter(venueUsers);
gridView.setAdapter(usersAdapter);
gridView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        Intent intent = new Intent(Users.this, com.roqbot.client.login.Profile.class);
        intent.putExtra("idUser", id);
        startActivity(intent);
    }
});

我的适配器:

private class UsersAdapter extends BaseAdapter implements ListAdapter {
    private JSONArray users;

    private UsersAdapter(JSONArray users) {
        this.users = users;
    }

    public int getCount() {
        return users.length();
    }

    public JSONObject getItem(int position) {
        return users.optJSONObject(position);
    }

    public long getItemId(int position) {
        return users.optJSONObject(position).optInt("idUser");
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null)
            convertView = Users.this.getLayoutInflater().inflate(R.layout.user_icon, null);

        JSONObject user = getItem(position);

        TextView username = (TextView) convertView.findViewById(R.id.username);
        username.setText(user.optString("sName"));

        TextView userScore = (TextView) convertView.findViewById(R.id.userScore);
        int iDJScore = user.optInt("iDJScore");
        if (iDJScore > 0) {
            userScore.setText(Integer.toString(iDJScore));
        }
        else {
            userScore.setVisibility(TextView.INVISIBLE);
            ((ImageView) convertView.findViewById(R.id.userScoreBg)).setVisibility(View.INVISIBLE);
        }

        TextView userLevel = (TextView) convertView.findViewById(R.id.userLevel);
        userLevel.setText(user.optString("iDJLevel"));

        TextView userMatch = (TextView) convertView.findViewById(R.id.userMatch);
        ImageView matchIcon = (ImageView) convertView.findViewById(R.id.matchIcon);
        int iCompatibility = user.optInt("iCompatibility");
        if (iCompatibility != 0) {
            userMatch.setText( iCompatibility + "%");
        }
        else {
            userMatch.setVisibility(TextView.INVISIBLE);
            matchIcon.setVisibility(ImageView.INVISIBLE);
        }

        ImageView userIcon = (ImageView) convertView.findViewById(R.id.userIcon);
        String sUserIcon = user.optString("sImageUrl-thumb");
        imageLoader.DisplayImage(sUserIcon, Users.this, userIcon);

        return convertView;
    }
}

我对为什么点击监听器不工作感到很困惑。这段代码对我来说在很多其他地方都有效。

最佳答案

我遇到了同样的问题。

在我的情况下,“android:focusable = true”阻止项目点击事件

在我的 GridList 项目布局中

<TextView android:id="@+id/auction_item_title"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:singleLine="true"
    ***android:focusable="true"***
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
/>

我删除了 [android:focusable="true"],问题解决了

关于java - GridView OnItemClickListener 没有调用 onItemClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410490/

相关文章:

c# - 在 sql for asp.net gridview 中使用 ROW_NUMBER() 自定义分页

c# - 动态添加复选框到gridview

java - 动态重新加载 jar 文件内容

java - 如何忽略java文件名?

java - 为 MediaCodec 设置的有效比特率是多少

c# - SQLException 未处理。在 GridView 中查看 Excel 文件

java - Spring Remoting 序列化和反序列化

java - 在java中将泛型类型作为参数传递?

android - 错误:程序类型已存在:com.google.protobuf.DescriptorProtos $ EnumDescriptorProto $ Builder

java - 如何判断服务器套接字是否不可用?