从阵列而不是预期的值,显示下一个项目 [英] Next item displayed from array instead of the expected value

查看:239
本文介绍了从阵列而不是预期的值,显示下一个项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个非常基本的Java问题,我有一个字符串数组

 的String [] navTitles =新的String [] {家庭,人力资源,企业,木匠,接下来};
 

这些标题显示在一个ListView。当第一项被点击,我要显示一定的清单,否则,如果任何其他标​​题被点击我要表现出不同的列表。第一个(默认)名单应该是出现在点击第一个项目之一。问题是,如果我点击标题,显示相关的下一个标题列表。当我点击最后一个头衔,我得到一个错误: -

 四月五日至2号:47:38.787:E / AndroidRuntime(1490):java.lang.ArrayIndexOutOfBoundsException:长= 5;指数= 5
4月5日至2号:47:38.787:E / AndroidRuntime(1490):在com.abc.attini.Home.displayView(Home.java:600)
 

下面是我的code: -

 的(INT J = 0; J< navMenuTitles.length和放大器;&放大器; J< iconColors.length; J ++){
    navDrawerItems.add(新NavDrawerItem(navMenuTitles [J],iconColors [J]));

}
适配器=新NavDrawerListAdapter(getApplicationContext(),navDrawerItems);
mDrawerList.setAdapter(适配器);

mDrawerList.setOnItemClickListener(新SlideMenuClickListener());




私有类SlideMenuClickListener工具
        ListView.OnItemClickListener {

}
    @覆盖
    公共无效onItemClick(适配器视图<>母公司视图中查看,
                            INT位置,长的id){

        对选定的导航抽屉的项目//显示视图
        displayView(位置);
    }
}


私人无效displayView(INT位置){
    片段片段= NULL;

    如果(位置== 0){
        片段=新HomeFragment(SPHostUrl,EN codedAccountName,
                deviceAuthKey,usersname,avatarUrl,全名,
                getApplicationContext(),myFinalNewsList);

    } 其他 {
        字符串myPosition = NULL;

        myPosition = navDrawerItems.get(位置).getTitle(); //线600


        companyNewsList = Lists.newArrayList(Collections2.filter(myFinalNewsList,
                新ArticleFilter(myPosition)));

        片段=新HomeFragment(SPHostUrl,EN codedAccountName,deviceAuthKey,
                usersname,avatarUrl,全名,getApplicationContext(),companyNewsList);

    }
 

解决方案

尝试以下code: -

错误发生,因为指标值达到超过指数。

 私人无效displayView(INT位置)
{
    片段片段= NULL;
    位置=位置%的长度; //你的数组的长度

    如果(位置== 0)
    {
        片段=新HomeFragment(SPHostUrl,EN codedAccountName,deviceAuthKey,usersname,avatarUrl,全名,getApplicationContext(),myFinalNewsList);
    }
    其他
    {
        字符串myPosition = NULL;

        myPosition = navDrawerItems.get(位置).getTitle(); //线600


        companyNewsList = Lists.newArrayList(Collections2.filter(myFinalNewsList,新ArticleFilter(myPosition)));
         片段=新HomeFragment(SPHostUrl,EN codedAccountName,deviceAuthKey,usersname,avatarUrl,全名,getApplicationContext(),companyNewsList);

    }
}
 

以上code在我结束工作得很好,因为它使在数组长度位置。

This is a very basic java question, I have an array of strings

String[] navTitles = new String[] {Home, HR, company, joiner, next};

These titles are shown in a ListView. When the first item is clicked, I have to display a certain list, else if any other title is clicked I have to show a different list. The first (default) list should be the one which appears on clicking the first item. The issue is,if I click on a title, the list related to the next title is displayed. When I click the last title i get an error:-

    05-02 04:47:38.787: E/AndroidRuntime(1490): java.lang.ArrayIndexOutOfBoundsException: length=5; index=5
05-02 04:47:38.787: E/AndroidRuntime(1490):     at com.abc.attini.Home.displayView(Home.java:600)

Here is my code:--

for (int j = 0; j < navMenuTitles.length && j < iconColors.length; j++) {
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[j], iconColors[j]));

}
adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems);
mDrawerList.setAdapter(adapter);

mDrawerList.setOnItemClickListener(new SlideMenuClickListener());




private class SlideMenuClickListener implements 
        ListView.OnItemClickListener {

}
    @Override
    public void onItemClick(AdapterView<?> parent, View view, 
                            int position,  long id) {

        // display view for selected nav drawer item
        displayView(position);
    }
}


private void displayView(int position) {
    Fragment fragment = null;

    if (position == 0) {
        fragment = new HomeFragment(SPHostUrl, encodedAccountName, 
                deviceAuthKey, usersname, avatarUrl, fullName, 
                getApplicationContext(), myFinalNewsList);

    } else {
        String myPosition = null;

        myPosition = navDrawerItems.get(position).getTitle(); //Line 600


        companyNewsList = Lists.newArrayList(Collections2.filter(myFinalNewsList, 
                new ArticleFilter(myPosition)));

        fragment = new HomeFragment(SPHostUrl, encodedAccountName, deviceAuthKey, 
                usersname, avatarUrl, fullName, getApplicationContext(), companyNewsList);

    }

解决方案

try below code:-

Error occur because index value reach more than the index.

private void displayView(int position) 
{
    Fragment fragment = null;
    position = position % length; //length of your array 

    if(position==0)
    {
        fragment = new HomeFragment(SPHostUrl,encodedAccountName,deviceAuthKey,usersname,avatarUrl, fullName,getApplicationContext(),myFinalNewsList);
    }
    else
    {
        String myPosition = null;

        myPosition =  navDrawerItems.get(position).getTitle(); //Line 600


        companyNewsList = Lists.newArrayList(Collections2.filter(myFinalNewsList, new ArticleFilter(myPosition)));
         fragment = new HomeFragment(SPHostUrl,encodedAccountName,deviceAuthKey,usersname,avatarUrl, fullName,getApplicationContext(),companyNewsList);

    }
}

above code works fine at my end because it makes position under array length .

这篇关于从阵列而不是预期的值,显示下一个项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆