在嵌套ListView中,如何设置内部视图的onItemClick以继承其父视图?

时间:2017-03-05 06:43:12

标签: android listview gridview

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

我的问题是,在我的Android APP中,有一个带有一些项目的ListView,点击每个项目将转移到一个新的片段。在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;
}

谢谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我有类似的设置。

使用ListView查看。 ListView的每个视图都有另一个Listview:

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

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

我想点击View1.1&amp; 2.1将被重定向到其父ListView onItemClick()。

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

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

工作。

我的解决方案是调用父ListView的activity / class中定义的方法。

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

 ((MyActivity)parent).TestMethod();

MyActivity类方法定义为(例如):

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

不是最好的实现,但由于performItemClick无法正常工作,我无法永远陷入困境,我不得不这样做“欺骗”。

希望它有所帮助。