向listview(android)添加onclicklistener

向listview(android)添加onclicklistener,android,listview,onclicklistener,Android,Listview,Onclicklistener,我已经实现了一个很棒的listview,我在这里找到了它 但我似乎无法添加一个onclick侦听器 我只想在单击该行时能够执行一个操作,当然要使用该行包含的数据 有什么想法吗? 谢谢 @覆盖 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.liste); this.requestWindowFeature(Window.FEATURE\u NO\u

我已经实现了一个很棒的listview,我在这里找到了它 但我似乎无法添加一个onclick侦听器 我只想在单击该行时能够执行一个操作,当然要使用该行包含的数据 有什么想法吗? 谢谢

@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.liste);
this.requestWindowFeature(Window.FEATURE\u NO\u TITLE);
//设置列表视图
最终ListView prestListView=(ListView)findViewById(R.id.list);
最终prestationAdapterEco prestationAdapterEco=新prestationAdapterEco(该,R.layout.prestation);
setAdapter(prestationAdapterEco);
//通过适配器填充列表
对于(最终prestationEco条目:getPrestations()){
prestationAdapterEco.add(条目);
}
prestListView.setClickable(真);
prestListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
对象o=prestListView.getItemAtPosition(位置);
String str=(String)o;//使用默认字符串适配器时
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
}
});
}
listView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
对象o=prestListView.getItemAtPosition(位置);
prestationEco str=(prestationEco)o;//使用默认字符串适配器时
Toast.makeText(getBaseContext(),str.getTitle(),Toast.LENGTH_SHORT).show();
}
});

如果您的活动扩展了ListActivity,您可以简单地重写
OnListItemClick()
方法,如下所示:

/** {@inheritDoc} */
@Override  
protected void onListItemClick(ListView l, View v, int pos, long id) {  
    super.onListItemClick(l, v, pos, id);

    // TODO : Logic
}  

prestListView.getItemAtPosition(位置);返回UI小部件:文本、图标、

请尝试以下方法:

Object o = prestationAdapterEco.getItemAtPosition(position);

从适配器获取对象。不是从列表视图中

二,。 对象o是一个prestationEco对象。不是字符串。

你在做什么

Object o = prestListView.getItemAtPosition(position);
String str=(String)o;//As you are using Default String Adapter
返回的
o
不是一个字符串,而是一个
prestationEco
,因此在执行
(String)o
列表时会得到一个CCE。setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
//TODO自动生成的方法存根
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
试试这个:

    list.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3)
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }
});
list.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、,
整数arg2,长arg3)
}
@凌驾
未选择公共无效(AdapterView arg0){
}
});

什么是失败的-或者它是如何失败的?你看到这样的行为了吗?当我执行它时,它会使应用程序崩溃。它加载列表,但当我选择一个Item@MikeBryant说“它崩溃了”并不是很有用。你能发布应用程序崩溃时生成的stacktrace吗?我不知道会在哪里,但我添加了一个try-catch语句,得到了“java.lang.ClassCastException:com.packagename.prestationEco”,这正是我尝试的结果,如何获取项目的详细信息?我总是在自定义listview中添加一个向量,为了获取数据,我创建了一个新对象,例如object obj=(object)vector.get(position);当我将向量传递给类时,我创建了一个自定义列表适配器,它创建了一个包含总向量大小和数据的listview…listview只是扩展了活动而不是listactivity,对于我来说,在ListFragment中,这是让onClick工作的唯一方法。SetonicClickListener就是不起作用。我想ListActivity也是如此。请务必在回答中添加注释。
Object o = arg0.getItemAtPosition(position);
Object o = prestListView.getItemAtPosition(position);
String str=(String)o;//As you are using Default String Adapter
list.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
    list.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3)
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }
});