GridView OnItemClickListener没有调用onItemClick



我试图为我的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"块项点击事件

In My GridList Item Layout

<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"],问题就解决了

实际上,您只需要确保网格中的项目不可点击。GridViews不能处理可点击的项目。例如按钮就不能工作。另外,如果你从LinearLayout中创建了一个项目,或者任何其他不可点击的项目,你必须确保你没有设置属性:clickable="true"

最新更新