本文介绍了android单选列表选择问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

朋友

我正在使用以下代码显示带有单选按钮的列表现在,我想默认选择列表中的特定单选按钮,因此使用不起作用的setSelection属性.

final String [] items=new String[]{"Item1","Item2","Item3","Item4"};
            ArrayAdapter<string> ad=new ArrayAdapter<string>(this,android.R.layout.simple_list_item_single_choice,items);
            list=(ListView)findViewById(R.id.List);
            list.setAdapter(ad);

list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setSelection(2);
    list.setOnItemClickListener(new OnItemClickListener()
            {

       public void onItemClick(AdapterView arg0, View arg1, int arg2,
         long arg3) {
        // TODO Auto-generated method stub
        TextView txt=(TextView)findViewById(R.id.txt);
        txt.setText(list.getItemAtPosition(arg2).toString());


       }

            }
            );

请指导我在做什么错误?

解决方案

我可能已经完全关闭了,但是我认为setSelection不必检查您的项目(如复选框或单选),尽管它可以导航到该项目. /p>

作为一种解决方法(也许有一个更优雅的解决方案),您可以扩展ArrayAdapter并在getView()方法中手动设置选中状态.

向您的班级添加类似内容:

private static class MArrayAdapter extends ArrayAdapter<String> {
    public Adapter(final Context context, final String[] objects) {
        super(context, android.R.layout.simple_list_item_single_choice, objects);
    }

    @Override
    public View getView(final int position, final View convertView, final ViewGroup parent) {
        final CheckedTextView view = (CheckedTextView) super.getView(position, convertView, parent);
        view.setChecked(position == 2);
        return view;
    }

}

并更改将适配器获取为new MArrayAdapter(this, items);

的方式

P.S.在我之前的评论中,我的错误是,您最好调用setChoiceMode(它只是在我的应用程序中,我调用notifyDataSetChanged,所以我并不是真的需要它).我认为您可能会在没有选择模式的情况下做出一些奇怪的举动.

friends,

i am using following code to display list with radio buttonsnow i want to select specific radio button of list by default so using setSelection property which does not work.

final String [] items=new String[]{"Item1","Item2","Item3","Item4"};
            ArrayAdapter<string> ad=new ArrayAdapter<string>(this,android.R.layout.simple_list_item_single_choice,items);
            list=(ListView)findViewById(R.id.List);
            list.setAdapter(ad);

list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setSelection(2);
    list.setOnItemClickListener(new OnItemClickListener()
            {

       public void onItemClick(AdapterView arg0, View arg1, int arg2,
         long arg3) {
        // TODO Auto-generated method stub
        TextView txt=(TextView)findViewById(R.id.txt);
        txt.setText(list.getItemAtPosition(arg2).toString());


       }

            }
            );

please guide what mistake am i doing?

解决方案

I might be completely off, but I think setSelection doesn't necessarely checks your item (as in checkbox, or radio), it navigates to it though.

As a workaround (maybe there is a more elegant solution) you can extend ArrayAdapter and set checked manually in a getView() method.

Add something like this to your class:

private static class MArrayAdapter extends ArrayAdapter<String> {
    public Adapter(final Context context, final String[] objects) {
        super(context, android.R.layout.simple_list_item_single_choice, objects);
    }

    @Override
    public View getView(final int position, final View convertView, final ViewGroup parent) {
        final CheckedTextView view = (CheckedTextView) super.getView(position, convertView, parent);
        view.setChecked(position == 2);
        return view;
    }

}

And change your way of getting an adapter to new MArrayAdapter(this, items);

P.S.On my previous comment, my mistake, you better call setChoiceMode (it's just in my app, I call notifyDataSetChanged, so I don't really need it). I think your'r up to some weird behaviour without choice mode.

这篇关于android单选列表选择问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 22:48