首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >方向更改后,标头不会留在ListFragment中

方向更改后,标头不会留在ListFragment中
EN

Stack Overflow用户
提问于 2013-03-15 21:04:58
回答 1查看 573关注 0票数 0

我正在构建一个ListFragment。在纵向它需要两个标题,但在横向我需要这些标题在左侧与ListView在右侧。xml处理不同的布局,而java处理正确的填充/更新它们。

除了在方向改变时,标题不会与列表一起保留之外,所有内容都像广告中所说的那样工作。listView甚至保留了滚动,但通过删除标题进行了移动。

嵌套一个片段可能会更好,但是listview不会包含framelayout,所以这是一个值得商议的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);

    loadFeeds();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_profile, container, false);

    return v;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    setupList(savedInstanceState);
    setupOrienation();

    super.onActivityCreated(savedInstanceState);
}

private void setupList(Bundle savedInstanceState) {
    if(getListAdapter() == null) {
        listProfileButtons = (View)getLayoutInflater(savedInstanceState).inflate(R.layout.view_profile_buttons, null);
        listProfile = (View)getLayoutInflater(savedInstanceState).inflate(R.layout.view_profile_header, null);

        getListView().addHeaderView(listProfile);
        getListView().addHeaderView(listProfileButtons);
    } 
}

private void setupOrienation(){
    if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        listProfile.setVisibility(View.GONE);
        listProfileButtons.setVisibility(View.GONE);
        setupProfile(getView());
        setupButtons(getView());
        getListView().setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            }
        });
    } else {
        listProfile.setVisibility(View.VISIBLE);
        listProfileButtons.setVisibility(View.VISIBLE);
        //setupProfile(getListView());
        //setupButtons(getListView());
        setupButtons(getView().findViewById(R.id.include_profile_buttons));

        getListView().setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                if(firstVisibleItem > 0) {
                    getView().findViewById(R.id.include_profile_buttons).setVisibility(View.VISIBLE);
                } else {
                    getView().findViewById(R.id.include_profile_buttons).setVisibility(View.GONE);
                }

            }
        });

    }
}

private void setupProfile(View parent) {
    Bundle userBundle = getArguments();

    TextView name = (TextView)parent.findViewById(R.id.text_view_profile_name);
    TextView screenName = (TextView)parent.findViewById(R.id.text_view_profile_at_user);
    ImageView image = (ImageView)parent.findViewById(R.id.image_view_profile_picture);

    name.setText(userBundle.getString(User.USER_NAME));
    screenName.setText("@" + userBundle.get(User.SCREEN_NAME));
    ImageCacheManager.getInstance(getActivity()).bindDrawable(userBundle.getString(User.PROFILE_IMAGE), image);

}

private void setupButtons(View v) {
    Bundle userBundle = getArguments();

    Button buttonTweets = (Button)v.findViewById(R.id.button_number);
    Button buttonFollowing = (Button)v.findViewById(R.id.button_follow);
    Button buttonFollowers = (Button)v.findViewById(R.id.button_friends);

    buttonTweets.setText(getResources().getString(R.string.profile_number, userBundle.getInt(User.NUMBER)));
    buttonFollowing.setText(getResources().getString(R.string.profile_number_follow, userBundle.getInt(User.NUMBER_OF_FOLLOW)));
    buttonFollowers.setText(getResources().getString(R.string.profile_number_friends, userBundle.getInt(User.NUMBER_OF_FRIENDS)));

    buttonTweets.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            switchListAdapter(adapter);
        }
    });

    buttonFollowing.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            switchListAdapter(followAdapter);
        }
    });

    buttonFollowers.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            switchListAdapter(friendsAdapter);
        }
    });
}

注释代码这样做是为了在标头丢失后停止空指针异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-19 21:18:19

因此,在旋转时,所有视图都会被销毁,这意味着头文件。我相信当你setRatainInstance(真)的时候,它应该处理ListFragment头中的头,但事实并非如此。要在使用retainInstance的ListFragment中使用标头,您必须执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
public void onDestroyView() {
    setListAdapter(null);
    super.onDestroyView();
}

然后我只在我需要的方向上添加标题,这很好。它的负面部分是scroll isn't retained,我必须弄清楚应该在哪个适配器中。不过,这些只是几个方法,这还不算太糟糕。

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

https://stackoverflow.com/questions/15442073

复制
相关文章
C++ 中的随机标头系列1
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
鲸落c
2022/11/28
1.4K0
C++ 中的随机标头系列1
设置和获取HTTP标头
%Net.HttpRequest的以下每个属性都包含具有相应名称的HTTP标头的值。如果不设置这些属性,则会自动计算它们:
用户7741497
2022/06/09
2.5K0
通过 HTTP 标头的 XSS
在某些情况下,在应用程序的一个 HTTP 标头中传递的信息未正确清理,并在请求页面的某处或另一端输出,从而导致 XSS 情况。
Khan安全团队
2022/03/09
2.1K0
通过主机标头的 XSS
在 IE 中处理重定向时有一个有趣的错误,它可以将任意字符插入到 Host 标头中。假设您有以下 http 响应:
Khan安全团队
2022/01/11
1.6K0
常见的HTTP标头介绍
在网络爬虫的实践过程中会遇到诸多挑战,被屏蔽是最令人头疼的一个。幸好,有许多技术可以帮助您免受IP屏蔽带来的影响,这其中,HTTP标头(HTTP Headers)的使用和优化是最有效的方法之一,但它往往也是最被大家低估的方法之一。
用户7850017
2022/05/07
1.1K0
常见的HTTP标头介绍
跨国摄像头通过国标协议注册EasyGBS后摄像头SIP协议被更改怎么办?
我们遇到过很多用户有跨国视频播放的情况,一般我们会推荐用户采用非国标协议来进行对接,但如果项目有需求,也会碰到跨国需要使用国标协议传输的情况。
TSINGSEE青犀视频
2021/12/15
6880
Log4Shell HTTP 标头注入
此模块需要 Metasploit:https://metasploit.com/download
Khan安全团队
2022/01/14
1.1K0
「HTTP标头」都给你整理好了
HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍
Java3y
2020/02/19
5.8K0
「HTTP标头」都给你整理好了
wordpress更改固定链接后404
wordpress的固定链接对于博客的seo优化是非常重要的。因为有些默认设置并不怎么友好,所以我们可以自定义设置自己的想要的固定链接,比如自定义连接结构为:/%post_id%.html。但是往往我们更改之后会出现404页面,这是网站的伪静态出了问题。 下面是在不同环境下的不同解决方法。
SweetHunter
2020/05/10
2.1K0
芯片后仿及SDF反标
启用SDF反标。在file.sdf中指定的最小值、类型或最大值中的一种,在实例instance_name上进行反标。
数字芯片社区
2021/12/02
5.5K0
芯片后仿及SDF反标
废掉腾讯云后:美亚柏科 9830 万中标
2021年9月30日,珠海市公安局(科信支队)珠海公安大数据智能化建设采购项目公开招标公告发布,预算 103398915.2 元。 中标结果 2021年10月22日中标(成交)结果公告发布,腾讯云计算(北京)有限责任公司 100,127,866.00 元中标。 综合评分法汇总表: 废标公告 2021年12月25日废标公告发布,本项目因故根据《中华人民共和国政府采购法》第36条规定,做废标处理。 《中华人民共和国政府采购法》第36条规定: 在招标采购中,出现下列情形之一的,应予废标: (一)符合专业条件的
云头条
2022/07/13
8170
废掉腾讯云后:美亚柏科 9830 万中标
使用结构化的标头字段改善HTTP
原文 / https://www.fastly.com/blog/improve-http-structured-headers
LiveVideoStack
2020/08/04
6660
CentOS挂载NAS存储后权限的更改
最后我们为了安全,再次将'根限制'勾选,这样做的意义是:就算你用nfs3挂载的文件系统,那么依然无法修改属主属组,更为安全,如下图:
染指流年
2023/03/13
4.1K0
CentOS挂载NAS存储后权限的更改
服务器未能识别 HTTP 标头 SOAPAction 的值
SOAPAction HTTP request header被用来标识SOAP HTTP请求的目的地,其值是个URI地址。SOAP发送并不限制格式、URI特征或其必须可解析,那么在这种情况下,发送一个HTTP SOAP请求时,其HTTP客户端必须使用/指明SOAPAction HTTP request header。 SOAPAction header的内容可以被用在服务端,诸如:防火墙适当的过滤基于HTTP的SOAP请求消息等场景。SOAPAction header的值为空串("")表示SOAP消息的目
张善友
2018/01/19
3.1K0
ThinkPHP5.1中URL重写.htaccess更改后无效的解决方法
昨天是打算更换项目框架的,决定了这个 ThinkPHP5,我使用的是 5.1 版本 开发中一直不喜欢 URL 中有这个index.php,这个时候就要使用.htaccess 来进行 URL 重写,之前有文章大概介绍了一下简单配置.htaccess 就可以实现的几个功能以及.htaccess 文件使用手册,框架都会通过 URL 重写隐藏应用的入口文件index.php,ThinkPHP 框架和 Laravel 框架的入口文件路径一样,都是在public下面 本地开发使用的是 Apache 环境,所以按照官方文
沈唁
2018/05/24
10.9K1
安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1、ListFragment 本身具只有一个ListView视图,返回的也是一个只有ListView的布局对象 2、ListFragment 不需要指定布局,本身固定,只有一个ListView视图 3、给ListFragment中的ListView加载数据或者绑定适配器都只能出现onCreateView(),因为onCreateView方法之后,ListView对
听着music睡
2018/05/18
2.1K0
浪潮云被废标后、东华软件 5724 万中标:河北省“智慧交管”项目(第五包)
2021年11月23日,河北省公安厅高速公路交通警察总队发布《“智慧交管”项目开发统一应用门户、应用平台;公安网、视频专网云平台、地理信息平台等部分》招标公告。 项目概况:项目建设内容主要包括完善高速公路前端智能感知系统,建设高速交警总队智慧交管大脑、统一应用门户、智慧交管应用平台、一体化指挥调度平台、智能化统一管理平台,升级高速交警总队公安交通集成指挥平台,升级改造高速交警总队、11个支队、22个大队指挥中心配套设施,同时租赁移动警务服务、链路和机柜。 招标范围:(第五包)开发统一应用门户、应用平台;公安
云头条
2022/05/17
5690
浪潮云被废标后、东华软件 5724 万中标:河北省“智慧交管”项目(第五包)
树莓派更改Wi-Fi后不重启
//配置Wi-Fi 配置你的Wi-Fi信息 sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
用户2458545
2022/09/07
4510
Android开发之ListFragment结合LoaderManager加载数据
之前实现过Android开发之ContentProvider结合LoaderManager加载数据,现在来实现用ListFragment加载 先看main.xml
提莫队长
2019/03/01
6750
Android开发之ListFragment结合LoaderManager加载数据
点击加载更多

相似问题

向ListFragment添加标头

13

更新标头拦截器不会更改标头

32

php代码不会更改标头

26

在onCreateView中向listFragment添加静态标头

20

滚动后更改css标头

53
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文