gpt4 book ai didi

java - 需要在 GridView 项目上点击两次

转载 作者:行者123 更新时间:2023-12-02 06:54:49 25 4
gpt4 key购买 nike

我有一个 GridView,其中每个项目添加了一个 LinearLayout。 LinearLayout 包含垂直顺序的图像和 TextView 。

当我点击该项目时,第一次在该项目中看到蓝色背景,第二次点击时,GridView 的 onItemclick 监听器会触发。我想知道为什么它没有在第一次点击时触发。

GridView 自定义适配器的 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();
}
});
}
});

知道如何仅在单击时显示弹出菜单。

最佳答案

为什么不调用popupMenu.show();直接在 onItemClick() 中?只需更换代码即可

v.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
popupMenu.show();
}
});

popupMenu.show();

关于java - 需要在 GridView 项目上点击两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17504222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com