[英]How to display random items from arraylist<T> derived from a doInBackground?
因此,我正在制作一个显示不同诗的arrayList的应用程序,我首先从API请求诗,然后Asynctask以Arraylist的形式返回诗,以显示列表中的20首随机诗。
这是Asynctask代码
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);
}
}
}
和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);
我可以想到两种方式:
只需使用随机数生成器生成介于0和条目数1之间的数字。 这种方法的缺点是可以重复。
提取后随机排序列表。 您可以使用Collections.shuffle(list)进行此操作,这样就不会产生任何重复,但是您将对整个列表进行排序,如果有成百上千个条目并且只想显示20个,这可能是浪费。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.