所以,这可能是一个简单的问题,或者我可能完全在这里做事,但这就是我所拥有的:
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
}
我想做的是: 当有人单击该按钮时,它会从列表视图中获取信息,并根据所选的无线电选项更新共享首选项。
我遇到的问题是获取当前所选项目的索引。检索该信息的最佳方法是什么?我是否完全错误地实施单选列表?
谢谢!
答案 0 :(得分:2)
arg2
是您列表中的位置。
看起来你正在做一些额外的(不必要的)处理。 arg1
是您的行视图,由于android.R.layout.simple_list_item_single_choice
布局仅包含CheckedTextView
,因此您可以直接使用它而无需查找。
CheckedTextView cv = (CheckedTextView) arg1;