Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView无法显示从URL检索的列表_Java_Android_Url_Fragment - Fatal编程技术网

Java ListView无法显示从URL检索的列表

Java ListView无法显示从URL检索的列表,java,android,url,fragment,Java,Android,Url,Fragment,我是安卓工作室的新手。我正在尝试使用选项create->newfragment(List)自定义IDE自动创建的片段。我无法显示从http页面检索到的列表,但是如果我手动将项目添加到列表中,仿真器会让我看到它。我怎样才能解决这个问题 municipioFragment.java package com.example.is2_app.ui.municipio; 导入android.content.Context; 导入android.os.Bundle; 导入android.view.Layou

我是安卓工作室的新手。我正在尝试使用选项create->newfragment(List)自定义IDE自动创建的片段。我无法显示从http页面检索到的列表,但是如果我手动将项目添加到列表中,仿真器会让我看到它。我怎样才能解决这个问题

municipioFragment.java

package com.example.is2_app.ui.municipio;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入androidx.annotation.Nullable;
导入androidx.fragment.app.fragment;
导入androidx.recyclerview.widget.GridLayoutManager;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入com.example.is2_app.R;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.nodes.Element;
导入org.jsoup.select.Elements;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
公共类市政片段扩展片段{
//TODO:自定义参数
私有int mColumnCount=1;
私人新闻;
私有OnListFragmentInteractionListener-MLListener;
公共市政碎片(){
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
lstNews=newarraylist();
getURL();
}
@凌驾
创建视图上的公共视图(LAYOUTINGER充气机,@Nullable ViewGroup container,
@可为空的捆绑包savedInstanceState){
视图=充气机。充气(R.layout.fragment\u市政列表,容器,错误);
//设置适配器
如果(查看RecyclerView的实例){
Context=view.getContext();
RecyclerView RecyclerView=(RecyclerView)视图;
如果(mColumnCountSo
getUrl()
正在
线程中运行
。此外,使用
JSoup
获取
文档
需要一些时间。这意味着
onCreateView
可能会在
lstNews
填充从
文档
中抓取的数据之前运行

因此,您希望更新您的
数据集
;然后,您希望通知您的
适配器
您的
数据集
已更改

将此方法添加到
适配器中

public void updateData(List<News> mData) {
    this.mData = mData;
    this.notifyDataSetChanged();
}
其中,
RecycleServiceAdapter
RecycleView
一起定义,并在
onCreateView
中初始化。 因此,下面这句话:

recyclerView.setAdapter(new MymunicipioRecyclerViewAdapter(lstNews, mListener));
将成为:

recyclerViewAdapter = new MymunicipioRecyclerViewAdapter(lstNews, mListener);
recyclerView.setAdapter(recyclerViewAdapter);
因此,
getUrl()
正在
线程中运行。此外,使用
JSoup
获取
文档需要一些时间。这意味着
onCreateView
可能会在
lstNews
填充从
文档中刮取的数据之前运行

因此,您希望更新您的
数据集
;然后,您希望通知您的
适配器
您的
数据集
已更改

将此方法添加到
适配器中

public void updateData(List<News> mData) {
    this.mData = mData;
    this.notifyDataSetChanged();
}
其中,
RecycleServiceAdapter
RecycleView
一起定义,并在
onCreateView
中初始化。 因此,下面这句话:

recyclerView.setAdapter(new MymunicipioRecyclerViewAdapter(lstNews, mListener));
将成为:

recyclerViewAdapter = new MymunicipioRecyclerViewAdapter(lstNews, mListener);
recyclerView.setAdapter(recyclerViewAdapter);

收集
适配器
数据
后,您不会更新它。
数据
的收集是在运行
onCreateView
后进行的。如果我的回答中有不清楚的地方,请告诉我。谢谢。我正在尝试修复它,但我不知道如何修改代码。您没有回答t在收集
适配器
数据
后更新它。
数据
的收集是在运行
onCreateView
后进行的。如果我的回答中有不清楚的地方,请告诉我。谢谢。我正在尝试修复它,但我不知道如何修改代码。谢谢,但是当我在for循环中添加
recyclerViewAdapter.updateData(lstNews);
我得到一个错误,因为
recyclerView
OnCreateView
中声明,而我在
onCreate
方法中调用
getURL()
。@peppe您想移动
getURL()
onCreateView
的末尾;因此它类似于
getURL();
然后返回视图;
line@peppe请让我知道我的评论是否解决了您的问题。我按照您的建议,但现在当我尝试在emulator中转到此片段时,应用程序崩溃,并显示以下日志消息:E/AndroidRuntime:FATAL EXCEPTION:Thread-2 Process:com.example.is2_app,PID:32098 android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图。@peppe我更新了答案,用
runOnUiThread
包装
updateData
,谢谢,但是当我添加
RecycleServiceAdapter.updateData(lstNews)时在for循环中,我得到了一个错误,因为
recyclerView
OnCreateView
中声明,而我在
onCreate
方法中调用
getURL()
。@peppe您需要将
getURL()
移动到
OnCreateView
的末尾;因此这就像
getURL();
然后返回视图;
line@peppe请让我知道我的评论是否解决了您的问题。我按照您的建议,但现在当我尝试在emulator中转到此片段时,应用程序崩溃,并显示以下日志消息:E/AndroidRuntime:FATAL EXCEPTION:Thread-2 Process:com.example.is2_app,PID:32098 android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图。@peppe I更新了我的答案,将
updateData
runOnUiThread
recyclerView.setAdapter(new MymunicipioRecyclerViewAdapter(lstNews, mListener));
recyclerViewAdapter = new MymunicipioRecyclerViewAdapter(lstNews, mListener);
recyclerView.setAdapter(recyclerViewAdapter);