我试图为我的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"