ExpandableListAdapter.getChildView()与AbsListView.LayoutParams的交互

时间:2011-05-08 06:00:20

标签: android event-handling parent-child android-listview

我正在研究BaseExpandableListAdapter的扩展,并具有以下getChildView()实现:

public View getChildView(int groupPosition, int childPosition, 
    boolean isLastChild, View convertView, ViewGroup parent) 
{
    AbsListView.LayoutParams lp = new AbsListView.LayoutParams
        (ViewGroup.LayoutParams.FILL_PARENT, 48);
    RelativeLayout layout = new RelativeLayout(myExpandableListActivity.this);
    layout.setLayoutParams(lp);
    TextView name = new TextView(myExpandableListActivity.this);
    name.setText("testing...");
    layout.addView(name);
    return layout;
}

此代码正常运行,当我运行应用程序时,展开一个组并单击一个子项,父应用程序能够正确检测onChildClick()。

但是,我注意到如果我不调用setLayoutParms(),则onChildClick()不再起作用。我的问题是,当我将AbsListView.LayoutParams分配给要返回的子视图时会发生什么?为什么要让我的onChildClick()在父应用程序中响应?

提前致谢!

1 个答案:

答案 0 :(得分:0)

在更多地使用代码的其他部分后,看起来省略了setLayoutParms()并不是导致我的onChildClick()不起作用的原因。我还使用布局inflater来设置我的RelativeLayout,其中包括一个CheckBox。原来是CheckBox导致孩子无法点击,这是我必须进一步研究的。

RelativeLayout spellLayout = (RelativeLayout) 
    getLayoutInflater().inflate(R.layout.testLayout, null);

感谢阅读!