根据月份转到ArrayList的位置

时间:2015-12-08 12:47:32

标签: android arraylist

我有一个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);
    }

但是,我不知道“做某事”部分。我可以这样做吗?

1 个答案:

答案 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);

你需要阅读更多相关内容并做一些试验。