Android:在对话框中的ListView中单击项目侦听器

Android:在对话框中的ListView中单击项目侦听器,android,Android,我有这个密码 private ListView event_list; event_list = (ListView) open_event_list.findViewById(R.id.events_list); loadList(cw.getDate()); “cw”是一个被点击的日历视图,取决于你点击的日期,一个对话框将出现,其中包含ListView。。。请看下图 loadList()方法的内部是 Cursor c = dbHelper.retrieveAllEventsWhere(TA

我有这个密码

private ListView event_list;
event_list = (ListView) open_event_list.findViewById(R.id.events_list);
loadList(cw.getDate());
“cw”是一个被点击的日历视图,取决于你点击的日期,一个对话框将出现,其中包含ListView。。。请看下图 loadList()方法的内部是

Cursor c = dbHelper.retrieveAllEventsWhere(TABLE_NAME, cwdate);
sched_list = new ArrayList<Schedule>();
Schedule s;
c.moveToFirst();
while(!c.isAfterLast())
{
    s = new Schedule();
    s.setId(c.getInt(c.getColumnIndex("_id")));
    s.setTitle(c.getString(c.getColumnIndex("title")));
    s.setDescription(c.getString(c.getColumnIndex("desc")));
    s.setTime(c.getLong(c.getColumnIndex("time")));
    s.setType(c.getString(c.getColumnIndex("type")));

    if(c.getInt(c.getColumnIndex("alarm")) == 1)
        s.setAlarm(true);
    else
        s.setAlarm(false);
    Log.d("dbcheck", s.toString());
    sched_list.add(s);
    c.moveToNext();
}
dbHelper.close();
Log.d("dbcheck", "==============================");
for(Schedule sc: sched_list)
{
    Log.d("dbcheck", sc.toString());
}
ScheduleAdapter schedListAdapter = new ScheduleAdapter(this, R.layout.schedule_list_item, sched_list);
event_list.setAdapter(schedListAdapter);

event_list.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View v, int arg2,
        long arg3) {
    TextView sched_id = (TextView) v.findViewById(R.id.sched_id);

    Toast toast = Toast.makeText(ScheduleActivity.this, sched_id.getText().toString(), Toast.LENGTH_SHORT);
    toast.show();

}
});
Cursor c=dbHelper.retrieveAllEventsWhere(表名称,cwdate);
sched_list=new ArrayList();
附表s;
c、 moveToFirst();
而(!c.isAfterLast())
{
s=新附表();
s、 setId(c.getInt(c.getColumnIndex(“_id”));
s、 setTitle(c.getString(c.getColumnIndex(“title”));
s、 setDescription(c.getString(c.getColumnIndex(“desc”));
s、 设置时间(c.getLong(c.getColumnIndex(“时间”));
s、 setType(c.getString(c.getColumnIndex(“type”));
如果(c.getInt(c.getColumnIndex(“报警”))==1)
s、 设置报警(真);
其他的
s、 设置报警(假);
Log.d(“dbcheck”,s.toString());
附表列表。添加;
c、 moveToNext();
}
dbHelper.close();
Log.d(“dbcheck”和“=======================================================”;
用于(附表sc:附表清单)
{
Log.d(“dbcheck”,sc.toString());
}
ScheduleAdapter ScheduleAdapter=新的ScheduleAdapter(此,R.layout.schedule_列表项,sched_列表);
事件列表。设置适配器(schedListAdapter);
事件列表。setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0,视图v,内部arg2,
长arg3){
TextView sched_id=(TextView)v.findViewById(R.id.sched_id);
Toast Toast=Toast.makeText(ScheduleActivity.this,sched_id.getText().toString(),Toast.LENGTH_SHORT);
toast.show();
}
});
因此,我的问题是,当我在对话框中的ListView上单击一个项目时,它什么也不做,我不能单击,或者它不可单击,图片状态时什么都不会发生


尝试使视图的项目R.layout.schedule\u list\u项目不可单击且不可聚焦

android:clickable="false"
android:focusable="false"
如果R.layout.schedule\u list\u项的任何子视图可以获得焦点,则OnItemClickListener()可能无法正常工作

Uou应将此代码输入事件列表。setOnItemClickListener

我想这会解决你的问题

((ScheduleAdapter)事件列表.getAdapter()).getItem(0)


是的,是的,我在日程表列表中添加了一些按钮,一个用于报警,一个用于删除。。所以我守;d是否将计划列表项的布局设置为可点击且可聚焦为false?这是你的意思吗?不是整个计划列表项目布局,只需将该视图中按钮的focusable属性设置为false(仅当你不想处理该按钮的onClick事件时),但我必须将列表中的按钮设置为clickable。。。对于delete SpecialYYEP,尝试删除列表项中的按钮。。现在每个项目都可以点击。。但是如何在列表中添加按钮而不影响项目的可点击性呢。我需要添加按钮来添加删除函数和内容。您可以在ScheduleAdapter类中为这些按钮添加onClick侦听器。我不明白您的意思?你能详细说明一下吗?当执行另一个操作(如dele等)时,不需要与getitem(0)同步这将有助于你。。。。