Listview项目初始选择

时间:2014-08-25 20:22:01

标签: android listview android-fragments android-listview navigation-drawer

我有一个导航抽屉,可在三个片段之间导航,当我启动我的应用片段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;
    }

1 个答案:

答案 0 :(得分:1)

使用:

    if(position==0)
    {
        drawerList.setItemChecked(0,true);
    }

你强迫总是检查第0行。您必须从getViewMethod中删除setItemChecked。在将适配器设置为ListView时调用setItemChecked。