我有一个导航抽屉,可在三个片段之间导航,当我启动我的应用片段1时,会显示。在这种情况下,我希望最初选择导航抽屉列表中的第一个项目。我按照以下链接:ListView Item selection Android,基于此我在我的适配器中有以下内容,
if(position==0){
listview.setItemChecked(position, true);
}
并且它正常工作,列表中的第一项是预先选定的。但是,当我点击列表中的另一个项目时,它会被选中,但第一个项目将被选中。
我尝试通过设置listview.setItemChecked(position, false);
来取消选择该项目,但这对我不起作用,所以我的初始选择工作正常,但我不能包含它,除非我可以在用户选择时取消选择它不同的项目。
有人可以帮忙吗?
*编辑 - 获取视图*
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.nav_item_layout, null);
}
imgIcon = (ImageView) convertView.findViewById(R.id.nav_item_image);
txtTitle = (TextView) convertView.findViewById(R.id.nav_item_text);
if(position==0)
{
drawerList.setItemChecked(0,true);
}
if(drawerList.isItemChecked(position)){
if(position!=0){
drawerList.setItemChecked(0, false);
}
imgIcon.setImageResource(selectedIconArray[position]);
txtTitle.setTextColor(Color.WHITE);
}else{
imgIcon.setImageResource(unselectedIconArray[position]);
txtTitle.setTextColor(Color.parseColor("#949494"));
}
txtTitle.setText(navDrawerItems.get(position).getTitle());
return convertView;
}
答案 0 :(得分:1)
使用:
if(position==0)
{
drawerList.setItemChecked(0,true);
}
你强迫总是检查第0行。您必须从getViewMethod中删除setItemChecked。在将适配器设置为ListView时调用setItemChecked。