我刚刚开始Android开发,我正在努力获得一个带有复选框工作的自定义列表视图.我创建了一个扩展Activity的基类,创建了一个适配器,并覆盖了getView()方法,将复选框添加到listview中.我假设我需要这样做,因为我需要didSelectRowIndexAtPath
与Obj C 相当的东西来更新我的模型.请告诉我是否还有其他方法可以做到这一点!
现在在我的基类中,我有以下代码 -
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout);
setContentView(R.layout.facilityscreen);
/* Static Data source */
facilityModel = new FacilityDataModel[2];
facilityModel[0] = new FacilityDataModel();
facilityModel[1] = new FacilityDataModel();
facilityModel[0].setFacilityName("Test 1");
facilityModel[0].setFacilityID("Facid0001");
facilityModel[0].setChecked(false);
facilityModel[1].setFacilityName("Test 2");
facilityModel[1].setFacilityID("Facid0002");
facilityModel[1].setChecked(true);
facilityListView = (ListView) findViewById(R.id.facilityListView);
FacilityScreenAdapter adapter = new FacilityScreenAdapter(this, facilityModel);
facilityListView.setAdapter(adapter);
myPatBtn = (Button) findViewById(R.id.myPatBtn);
myPatBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
int i=0;
i++;
}});
facilityListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
int i=0;
i++;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
Run Code Online (Sandbox Code Playgroud)
我现在的问题是根本没有调用setOnItemSelectedListener.现在已经挣扎了几个小时,我无法弄清楚为什么它根本不会被调用.
任何帮助深表感谢!
谢谢,
Teja.
小智 18
我知道这是一个过时的答案,但我打算写一下,以防其他一些有同样"问题"的人碰到这个页面:
上述问题的解决方案不是问题而只是一个误解是ListView.onItemSelected()事件被触发,在:
1)导航模拟器 - 交叉手柄或2)就我的HTC-Hero而言,在白色小滚球上进行滚动动作.
您不必将活动显式扩展到ListActivity.
这是我的小代码,它从listView项目中的TextView控件中检索电话号码.当用户触摸列表项或滚动列表时
myList.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view, int position, long i)
{
TextView myPhone = (TextView)view.findViewById(R.id.txtphone);
MakeACall(myPhone.getText().toString());
}
});
myList.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent, View view, int position, long i)
{
TextView myPhone = (TextView)view.findViewById(R.id.txtphone);
MakeACall(myPhone.getText().toString());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
我希望这对你有帮助...... :)
已经存在带有复选框的 ListView 的可能性。
public class List11 extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, GENRES));
final ListView listView = getListView();
listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
private static final String[] GENRES = new String[] {
"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
"Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
};
}
Run Code Online (Sandbox Code Playgroud)
我从APIDemos中获取了这个,因为它是最简单的。然后,您可以使用以下方法获取所选项目:
long[] selectedIds = getListView().getCheckItemIds();
Run Code Online (Sandbox Code Playgroud)
您可能还感兴趣的是列表内部使用的CheckedTextView 。
onListItemClick
对于问题的部分尝试从而不是
延伸。然后覆盖. 那应该有效。ListActivity
Activity
onListItemClick
归档时间: |
|
查看次数: |
26711 次 |
最近记录: |