Android ListView headerview无法响应click事件,有时当headerview通过keybord模式获得焦点时,然后在触摸模式下单击它

时间:2011-10-20 08:50:17

标签: android events listview onclick

Android ListView headerview无法响应click事件,有时当headerview通过keybord模式获得焦点时,则在触摸模式下单击它。 回购此方案的步骤: 1.滚动列表视图,直到标题视图从视线中消失 2.通过键盘模式使标题视图获得焦点 3.在触摸模式下单击标题视图 那么headerview只能响应触摸事件,并且无法响应click事件。但在某些设备中,这种情况不会发生。

期望:标题视图可以在我们看到任何时候响应点击事件

Android版:2.2 / 2.3 设备:一些带轨迹球或硬键盘的设备

我需要headerview可以随时响应click事件。那么有人可以找出这种情况的原因吗?并给我一些建议来解决这个问题? 任何提示都表示赞赏,提前谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我不知道为什么它表现得很奇怪,但我能够通过不使用addHeaderView()来解决问题。

只需在适配器中添加一个标头作为行的一部分:mListView.setItemsCanFocus(true);

@Override
public int getItemViewType(int position) {
    return position == 0 ? 0 : 1;
}

@Override
public int getViewTypeCount() {
    return 2;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    if (v == null) {
        if (getItemViewType(position) == 0) {
            LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.music_list_header_view_2, null);
        } else {
            LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.music_favorite_list_row, null);
        }
    }
}
希望它有所帮助!