这是一个非常基本的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 .
相关推荐
最新文章