首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >适配器中具有多个OnItemClickListener的viewType

适配器中具有多个OnItemClickListener的viewType
EN

Stack Overflow用户
提问于 2015-03-16 16:53:31
回答 1查看 517关注 0票数 0

我有一个适配器,它具有这样的多视图类型。

代码语言:javascript
运行
复制
public class ListAdapter extends BaseAdapter { 
    ...
    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int i) {
        return (bool()) ? 1 : 0);
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        int type = getItemViewType(i);
        if (type == 1) {
            return viewType(R.layout.list_item_ads_alert, i, view, viewGroup);
        }
        else {
            return viewType(R.layout.list_item_ads, i, view, viewGroup);
        }
    }
}

然后,在我的片段中实例化它,并将其设置为listView,并在其中添加一个onItemClick侦听器。

代码语言:javascript
运行
复制
ListAdapter adapter = new ListAdapter();
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Log.d("app", "pushed item " + i);
    }
});

问题是,当我单击第二个视图类型的项时,不会调用我的ItemClickListener,但是它对第一个视图类型有效。

您知道在这种情况下是否有特定的方法来执行ItemClick吗?当然,我可以向第二种视图类型添加一个onClick,但这似乎不对(代码分离)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-16 17:00:34

如果您的第二个视图类型包含一个复选框或按钮,则该小部件正在从父视图中窃取焦点,并且不允许单击父视图。为了防止这种情况发生,在第二个视图类型的根布局中,应该将

代码语言:javascript
运行
复制
android:descendantFocusability="blocksDescendants"

因此,子视图不能窃取父视图的焦点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29082545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档