【问题标题】:In Nested ListView, how to set onItemClick of the inner view to inherit its parent's one?在Nested ListView中,如何设置内部视图的onItemClick继承其父视图?
【发布时间】:2018-05-31 02:08:13
【问题描述】:

这是我关于stackoverflow的第一个问题。

我的问题是,在我的 Android APP 中,有一个 ListView 有一些 Items,点击每个项目都会转换到一个新的 Fragment。在 Item 本身中,有一个内部 GridView 来显示来自数组的一些动态数据。

我担心的是,如果我单击该内部 GridView 的项目,它不会调用 ListView 的 onItemClick 方法并且什么也不做(因为我已将其设置为禁用)。我想要的是设置这些内部项目不可点击,就像 List Item 中的 TextView 一样。

这是我在父适配器的 getView 方法中将适配器设置为内部 GridView 的行。

MyListAdapter{
......
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ......
    grid.setAdapter(new ArrayAdapter<>(this.mContext,R.layout.item,list));
    grid.setEnabled(false);
    return convertView;
}

谢谢。

【问题讨论】:

    标签: android listview gridview


    【解决方案1】:

    您是否尝试过在列表视图中使用 android:descendantFocusability="blocksDescendants"。

    【讨论】:

      【解决方案2】:

      点击只在最顶层。您必须将侦听器添加到网格视图的每个项目。

      【讨论】:

        【解决方案3】:

        我有类似的设置。

        使用 ListView 查看。而ListView的每一个view都有另一个Listview:

        .ListView
        ...View1
        ......ListView
        .........View1.1
        
        ...View2
        ......ListView
        .........View2.1
        

        我想点击 View1.1 和 2.1 以重定向到它们的父 ListView onItemClick()。

        所以我尝试将它添加到嵌套的 ListViews getDataRow() 方法中:

        ((ListView) parent).performItemClick(finalScrapView, position, 0);
        

        它确实没有工作。

        我的解决方案是调用在父 ListView 的活动/类中定义的方法。

        嵌套的 ListViews getDataRow() 方法现在有:

         ((MyActivity)parent).TestMethod();
        

        而 MyActivity 类方法定义(作为例子)为:

        public void teste()
        {
            Toast.makeText(App.getInstance().getApplicationContext(), "TESTE", Toast.LENGTH_SHORT).show();
        }
        

        不是最好的实现,但由于 performItemClick 不起作用,我不能永远卡在那里,我不得不做这个“作弊”。

        希望能有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-07
          • 1970-01-01
          • 2012-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-19
          相关资源
          最近更新 更多