Java 如何显示arraylist中的随机项<;T>;来自于一个doInBackground?
所以我制作了这个应用程序,它显示了不同诗歌的列表 我首先从API请求诗歌,然后Asynctask以Arraylist I wand的形式返回诗歌,以显示列表中的20首随机诗歌 这是异步任务代码Java 如何显示arraylist中的随机项<;T>;来自于一个doInBackground?,java,android,arraylist,android-asynctask,Java,Android,Arraylist,Android Asynctask,所以我制作了这个应用程序,它显示了不同诗歌的列表 我首先从API请求诗歌,然后Asynctask以Arraylist I wand的形式返回诗歌,以显示列表中的20首随机诗歌 这是异步任务代码 private class TitleAsynctask extends AsyncTask<URL,Void,List<view>> { private ProgressDialog progressDialog; @Override
private class TitleAsynctask extends AsyncTask<URL,Void,List<view>> {
private ProgressDialog progressDialog;
@Override
public List<view> doInBackground(URL... urls){
URL url = Query_utils.createurl(POEM_TITLE);
String json = "";
Log.d(LOG_TAG,"this worked");
{
try {
json = Query_utils.makehttprequest(url);
Log.d(LOG_TAG, "make Httprequest works");
} catch (IOException e) {
}
}
List<view> title_view = Query_utils.extracttitlefromjson(json);
return title_view;
}
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onPostExecute(List<view> data) {
madapter.clear();
if (data != null && !data.isEmpty()){
madapter.addAll(data);
}
}
}
私有类TitleAsynctask扩展异步任务{
私有进程对话;
@凌驾
公共列表doInBackground(URL…URL){
URL URL=Query\u utils.createurl(诗歌标题);
字符串json=“”;
Log.d(Log_标签,“这起作用”);
{
试一试{
json=Query_utils.makehttprequest(url);
Log.d(Log_标签,“使Httprequest工作”);
}捕获(IOE异常){
}
}
List title\u view=Query\u utils.extracttitlefromjson(json);
返回标题视图;
}
@RequiresApi(api=Build.VERSION\u code.HONEYCOMB)
@凌驾
受保护的void onPostExecute(列表数据){
madapter.clear();
if(data!=null&&!data.isEmpty()){
madapter.addAll(数据);
}
}
}
onCreate代码是
TitleAsynctask task = new TitleAsynctask();
URL url = Query_utils.createurl(POEM_TITLE);
task.execute(url);
ArrayList<view > arr = new ArrayList<view>();
final ListView poem_Title_list = (ListView) findViewById(R.id.list_item);
madapter = new title_adapter(this ,arr);
poem_Title_list.setAdapter(madapter);
TitleAsynctask task=new TitleAsynctask();
URL URL=Query\u utils.createurl(诗歌标题);
task.execute(url);
ArrayList arr=新的ArrayList();
最终列表视图标题列表=(列表视图)findViewById(R.id.list\u项);
madapter=新标题_适配器(此,arr);
诗篇标题列表。setAdapter(madapter);
我可以想出两种方法:
希望有帮助当我这样做时,它会给出一个异常,说输入大小是521(例如),大小是0,我想这意味着当我使用ArrayList arr时,它的大小是0,这显然不是。你什么时候进行排序?您必须在postExecute中执行。由于提取是异步的,所以不能在onCreate中进行。我没有排序,但它仍然可以工作,直到我没有调用其他方法为止。对不起,我没有理解你的意思。在哪里调用访问它们的方法?