You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中移除GridView内父频道快捷方式的技术求助

彻底移除GridView中的父频道快捷方式

你现在只是用setVisibility(View.GONE)隐藏了视图,但Adapter的数据源计数和位置逻辑里还保留着这个项,所以GridView依然会为它预留位置,导致用户列表从左侧开始显示(相当于那个隐藏项占了第一个位置)。要彻底移除,需要修改Adapter的核心逻辑:

步骤1:修改getCount()方法,移除父频道的计数

原来的方法里会给总数量加1来包含父频道,现在删掉这部分:

@Override
public int getCount() {
    int count = currentusers.size() + subchannels.size() + stickychannels.size();
    // 移除父频道计数逻辑
    return count;
}

步骤2:修改getItem()方法,去掉父频道的位置判断逻辑

原来的方法里会处理父频道对应的position,现在直接跳过这部分逻辑:

@Override
public Object getItem(int position) {
    if (position < stickychannels.size()) {
        return stickychannels.get(position);
    }
    position -= stickychannels.size();

    if (position < currentusers.size()) {
        return currentusers.get(position);
    }
    position -= currentusers.size();

    // 移除父频道的处理逻辑
    return subchannels.get(position);
}

步骤3:修改getItemViewType()方法,移除父频道的类型判断

同样删掉处理父频道类型的代码:

@Override
public int getItemViewType(int position) {
    if (position < stickychannels.size())
        return INFO_VIEW_TYPE;
    position -= stickychannels.size();

    if (position < currentusers.size())
        return USER_VIEW_TYPE;
    position -= currentusers.size();

    // 移除父频道类型判断逻辑
    return CHANNEL_VIEW_TYPE;
}

步骤4:清理getView()方法中的父频道视图分支

既然不会再走到PARENT_CHANNEL_VIEW_TYPE分支,直接删掉这部分代码:

// 移除整个PARENT_CHANNEL_VIEW_TYPE的case分支

做完这些修改后,Adapter就不会再为父频道快捷方式生成任何项,GridView的布局会完全移除这个位置,用户列表就能正常排列了。

内容的提问来源于stack exchange,提问作者Alhe Mora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:45:41