gpt4 book ai didi

Android ListView addHeaderView() nullPointerException 用于 XML 中定义的预定义 View

转载 作者:IT老高 更新时间:2023-10-28 23:01:26 24 4
gpt4 key购买 nike

尝试将 addHeaderView()addFooterView() 用于 ListView。如果我尝试使用我在 XML 中为页眉或页脚预定义的 View ,我会得到一个空指针异常。但是,如果我使用代码动态创建 View ,它可以正常工作...

// This doesn't work... nullPointerException
ListView lv = (ListView) findViewById(R.id.my_list_view);
TextView header = (TextView) findViewById(R.id.my_header);
lv.addHeaderView(header);

// This works fine
ListView lv = (ListView) findViewById(R.id.my_list_view);
TextView header = new TextView(this);
TextView.setHeight(30);
TextView.setText("my header text!");
lv.addHeaderView(header);

我的堆栈跟踪:

Caused by: java.lang.NullPointerException
at android.widget.ListView.clearRecycledState(ListView.java:522)
at android.widget.ListView.resetList(ListView.java:508)
at android.widget.ListView.setAdapter(ListView.java:440)
at com.company.myapp.MyActivity.refreshList(MyActivity.java:85)
at com.company.myapp.MyActivity.onCreate(MyActivity.java:37)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
... 11 more

有什么线索吗?

最佳答案

编辑:

你根本做不到

View header = findViewById(R.layout.headerView);
lst.addHeaderView(header);

这将不起作用,因为在 中传递的 View 必须被膨胀。简而言之,当您在 Activity 开始时执行 setContentView android 框架会自动扩展 View 并使用它。为了增加你的标题 View ,你所要做的就是

View header = (View)getLayoutInflater().inflate(R.layout.headerView,null);
ls.addHeaderView(header);

最后,在设置标题 View 并运行应用程序后添加适配器。您应该会看到带有您放入适配器的内容的标题 View 。

就我而言,这是可行的

View header = getLayoutInflater().inflate(R.layout.header, null); 
View footer = getLayoutInflater().inflate(R.layout.footer, null);

ListView listView = getListView();

listView.addHeaderView(header);
listView.addFooterView(footer);

setListAdapter(new ArrayAdapter<String(this,android.R.layout.simple_list_item_single_choice,android.R.id.text1, names));

关于Android ListView addHeaderView() nullPointerException 用于 XML 中定义的预定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com