Android:具有可点击网格项和嵌套视图的网格视图(按钮,复选框)

时间:2011-09-12 10:16:52

标签: android gridview

基本上,我希望实现一个GridView,其中项目本身是可点击的,但GridView内可点击ButtonCheckbox es。

这是一个示例布局:

Gridview
-----------------------------------------
|[ImageView]        |[ImageView]        |
|[TextView]         |[TextView]         |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
|[ImageView]        |[ImageView]        |
|[TextView]         |[TextView]         |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------

基本上,我想要做的是,当用户点击CheckBox时,现在可以从GridView中选择多个项目。当用户点击Button时,会显示A Popup。当用户点击其他任何位置时,系统会启动新的Activity。这一点的重点不是长按以显示上下文菜单,我想要一个按钮取代它。

有关如何处理此方案的任何建议?在我当前的设置中,如果我在适配器的Button方法中添加GetView(),则只能点击Button。整个GridView项目无法点击。当我删除Button时,GridView项再次可以点击。它似乎只有整个GridView项或Button可点击(响应OnClickListener()。有没有办法让它们都可点击?

2 个答案:

答案 0 :(得分:12)

这篇文章很老,但仅供参考/ googlers,我有以下解决方案:

您只需要为imageAdapter的getView中的按钮,复选框写入所有事件。 然后在gridview标记下的layout.xml文件中添加以下行:

android:clickable="true"
android:descendantFocusability="beforeDescendants"

并将这些行添加到按钮和复选框:

android:focusable="false"
android:focusableInTouchMode="false"

如果您想要点击/触摸gridview项目的任何其他区域,则需要启动其他活动,您需要使用(标准代码)/(您自己的匹配实现):

GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
        }

干杯,         });

答案 1 :(得分:1)

您可以创建 xml并将其用作gridView项。然后使用适配器初始化gridView中的按钮和复选框。在您可以将clickListener添加到gridView项目之后,但是添加到 item xml中的布局之后,它的子视图将不会响应click事件。