获取简单列表项单选 - 获取所选项

时间:2012-07-03 03:40:06

标签: android listview android-arrayadapter

所以,这可能是一个简单的问题,或者我可能完全在这里做事,但这就是我所拥有的:

public class SetPrefsActivity extends ListActivity{
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.radiolist);
    ArrayList<Hall> listItems = new ArrayList<Hall>();
    ArrayAdapter<Hall> ar = new ArrayAdapter<Hall>(this, android.R.layout.simple_list_item_single_choice, listItems);
    setListAdapter(ar);
    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener()
    {
    boolean somethingChecked = false;
    int lastChecked;
       public void onItemClick(AdapterView arg0, View arg1, int arg2,
         long arg3) {
           if(somethingChecked){
               ListView lv = (ListView) arg0;
               TextView tv = (TextView) lv.getChildAt(lastChecked);
               CheckedTextView cv = (CheckedTextView) tv;
               cv.setChecked(false);
           }
           ListView lv = (ListView) arg0;
           TextView tv = (TextView) lv.getChildAt(arg2);
           CheckedTextView cv = (CheckedTextView) tv;
           if(!cv.isChecked())
           cv.setChecked(true);
           lastChecked = arg2;
           somethingChecked=true;
       }
    });
    new LoadListTask().execute(); //This loads Items into the List

    Button b = (Button) findViewById(R.id.savePrefBtn);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //IF SOMETHING IS SELECTED,
            //THEN UPDATE SHARED PREFERENCES

            Intent i = new Intent(SetPrefsActivity.this, SomeOtherActivity.class);
            startActivity(i);
            }

        }
    });
}
//other stuff to fill the arrayAdapter
}

我想做的是: 当有人单击该按钮时,它会从列表视图中获取信息,并根据所选的无线电选项更新共享首选项。

我遇到的问题是获取当前所选项目的索引。检索该信息的最佳方法是什么?我是否完全错误地实施单选列表?

谢谢!

1 个答案:

答案 0 :(得分:2)

arg2是您列表中的位置。

看起来你正在做一些额外的(不必要的)处理。 arg1是您的行视图,由于android.R.layout.simple_list_item_single_choice布局仅包含CheckedTextView,因此您可以直接使用它而无需查找。

CheckedTextView cv = (CheckedTextView) arg1;