我正在尝试学习如何在点击ListView
中的单选按钮时收到通知,但当我点击ListView
项旁边的单选按钮时,没有任何回复。下面是我设置监听器的代码。我在onPostExecute()
方法下的异步任务中执行此操作,我从服务器填充ListView
,我的主要活动扩展为MapActivity
。有谁知道我做错了什么?
protected void onPostExecute(ArrayList<String> result) {
// ... some code
mapView.postInvalidate();
final ArrayAdapter<String> arrayAdpt = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_list_item_single_choice,
viewline);
ListView restaurant_list = (ListView) findViewById(R.id.list);
restaurant_list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
restaurant_list.setAdapter(arrayAdpt);
restaurant_list.setScrollContainer(true);
restaurant_list.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Log.e("listargs", (String.valueOf(arg1)) + " " + String.valueOf(arg3));
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
答案 0 :(得分:2)
有谁知道我做错了什么?
我建议您使用OnItemClickListener代替 OnItemSelectedListener
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View parent,
int position, long id) {
// do your stuff
}
});
当您想捕获点击事件时,通常会使用OnItemClickListener 。 OnItemSelectedListener 位于Spinner的另一端。
答案 1 :(得分:1)
听起来你可能有焦点问题。仅当没有其他视图可以获得焦点时,单击侦听器才有效。
使用以下内容更改复选框xml:
focusable="false"
如果要在代码中生成布局,请将其设置为false
。
答案 2 :(得分:0)
OnItemSelectedListener 适用于触控板/轨迹球事件
OnItemClickListener 适用于点击事件
Personaly我始终为安全而实施。