我有一个ArrayList
,其中包含根据月份的HTML文件。我想要完成的是,如果当前月份是Jan,那么列表的第一个是jan.html,然后是feb.html,mar.html等。如果当前月份是2月,{{{ 1}}将直接移动到第二个,即feb.html,然后是mar.html,之后是jan.html。
ArrayList
这是我的mListViews = new ArrayList<View>();
addView(mListViews, "file:///android_asset/jan.html");
addView(mListViews, "file:///android_asset/feb.html");
addView(mListViews, "file:///android_asset/mar.html");
addView(mListViews, "file:///android_asset/apr.html");
addView(mListViews, "file:///android_asset/may.html");
addView(mListViews, "file:///android_asset/jun.html");
addView(mListViews, "file:///android_asset/jul.html");
addView(mListViews, "file:///android_asset/aug.html");
addView(mListViews, "file:///android_asset/sep.html");
addView(mListViews, "file:///android_asset/oct.html");
addView(mListViews, "file:///android_asset/nov.html");
addView(mListViews, "file:///android_asset/dec.html");
:
addView
我知道我需要使用
private void addView(List<View> viewList,String url)
{
WebView webView=new WebView(this);
webView.loadUrl(url);
viewList.add(webView);
}
但是,我不知道“做某事”部分。我可以这样做吗?
答案 0 :(得分:1)
你可以直接从Arraylist获取该项目(如果填充了列表)
使用get(index)
不需要if语句
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH);
mListViews.get(month);
修改强> 默认情况下,ArrayList将按顺序添加项目 索引= 0,然后是1,......等
除非你真的需要在添加时设置索引,否则你不需要这样做
您必须修改addView()函数,如下所示:
private void addView(int index, List<View> viewList,String url)
{
WebView webView=new WebView(this);
webView.loadUrl(url);
viewList.add(index,webView);
}
并且在调用addView()时,就像这样
addView(0, mListViews, "file:///android_asset/jan.html");
addView(1, mListViews, "file:///android_asset/feb.html");
但是,传递,0,1,2 ......是arrayList的默认值 除非您想要使用索引
更改月份名称的顺序,否则它将不会更改任何内容<强> EDIT2:强>
我认为您需要使用Collections.rotate() 还原旧代码,并将所有项目添加到列表后 将列表旋转到当前月份, 一个幸运的猜测是
Collections.rotate(mListViews , mListViews.size()-month);
你需要阅读更多相关内容并做一些试验。