我有一个 GridView,我在其中为每个项目添加了一个 LinearLayout。LinearLayout 包含垂直顺序的图像和文本视图。
当我点击该项目时,我第一次在项目中看到蓝色背景,第二次点击时,GridView 的 onItemclick 侦听器会触发。我想知道为什么它没有在第一次点击时触发。
网格视图自定义适配器的getView方法是:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(ctx);
ll.setOrientation(LinearLayout.VERTICAL);
ImageView imgView = new ImageView(ctx);
imgView.setImageResource(imgIds[position]);
imgView.setFocusable(false);
imgView.setFocusableInTouchMode(false);
TextView tv = new TextView(ctx);
tv.setText(names[position]);
tv.setGravity(Gravity.CENTER);
ll.addView(imgView);
ll.addView(tv);
ll.setFocusable(false);
ll.setFocusableInTouchMode(false);
ll.setClickable(false);
return ll;
}
此网格的项目单击侦听器上的 MainActivity 是:
GridView gv = (GridView) findViewById(R.id.gv);
gv.setAdapter(new GridAdapter(MainActivity.this));
gv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
popupMenu = new PopupMenu(MainActivity.this, v);
popupMenu.getMenu().add(Menu.NONE, ONE, Menu.NONE, "Play");
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupMenu.show();
}
});
}
});
知道如何仅在单击时显示弹出菜单。