Android 从listView中的选定项获取元素

Android 从listView中的选定项获取元素,android,listview,android-studio,Android,Listview,Android Studio,Stackoverflow真的帮助我达到了这个水平。谢谢大家 基本上,我希望从ListView中的选定项中获取元素(子部分而不是整个数据)。我在这里读到,它可以用游标来完成,但没有成功。这是关联的代码段: listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override

Stackoverflow真的帮助我达到了这个水平。谢谢大家

基本上,我希望从ListView中的选定项中获取元素(子部分而不是整个数据)。我在这里读到,它可以用游标来完成,但没有成功。这是关联的代码段:

listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {

                    Cursor member = (Cursor)parent.getItemAtPosition(position);

                    Toast.makeText(getApplicationContext(),
                            "Click ListItem Number "+member.getString(2), Toast.LENGTH_LONG)
                            .show();
                }
            }); 
listView.setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
游标成员=(游标)父.getItemAtPosition(位置);
Toast.makeText(getApplicationContext(),
“单击ListItem编号”+member.getString(2),Toast.LENGTH\u LONG)
.show();
}
}); 
parent.getItemAtPosition(position)
提供了(我想是数组):

{name=“xyz_name”,uname=“xyz_user”,desig=“xyz_desig”}
正确无误

我想,假设,从这里获取
uname
,因此,使用游标获取它,但上面的代码片段给出了错误

java.lang.ClassCastException:java.util.HashMap不能强制转换为android.database.Cursor


添加细节:我正在正确获取与listView项关联的文本。我真正想要的是检索到的数据的一个子部分。例如,检索到的数据显然是一个包含名称和角色的数组。现在,我只想获取数组中的'role'元素。因为数据是作为数组检索的,所以我在网上搜索的是,我可以使用游标检索不同的元素。希望你现在明白了

我身边似乎有个愚蠢的语法错误。如果你有其他选择,请告诉我

谢谢:)

用简单的方法

ListView list = (ListView) findViewById(R.id.listview);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

          Object listItem = list.getItemAtPosition(position);

        Toast.makeText(getApplicationContext(),"Click ListItem Number"+listItem.getString(), Toast.LENGTH_LONG).show();
       } 
    });
ListView list=(ListView)findViewById(R.id.ListView);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
对象listItem=list.getItemAtPosition(位置);
Toast.makeText(getApplicationContext(),“单击列表项编号”+ListItem.getString(),Toast.LENGTH_LONG).show();
} 
});

了解您的情况,
getItemAtPosition(position)
将返回一个
对象

@Charuka Silva发布的答案可能不适合您,因为您可能使用了hashmap对象,比如
hashmap obj=new hashmap()

因此,解决方案是再次使用HashMap来获取返回的对象,并使用
get(“key”)
函数来检索与其关联的值。我想这就是你想要的:

listView.setAdapter(adapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
//Use HashMap here
                    HashMap<String, Object> member = (HashMap<String, Object>) parent.getItemAtPosition(position);


//Use obj.get("key") here to retrieve the value associated with the "key"
              Toast.makeText(getApplicationContext(),"member.get("uname"), Toast.LENGTH_LONG)
                            .show();
                }
            });
listView.setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//在这里使用HashMap
HashMap成员=(HashMap)parent.getItemAtPosition(position);
//在这里使用obj.get(“key”)检索与“key”关联的值
Toast.makeText(getApplicationContext(),“member.get”(“uname”),Toast.LENGTH\u LONG)
.show();
}
});
在我的小项目中,我遇到了类似的问题,@user1068963帮助了我。添加链接


希望这能有所帮助。

请显示您在
getItemAtPosition()
@Opiatefuchs中所做的工作。我没有理解您的意思?使用
getItemAtPosition(position)
会给我一个正确的数组,其中包含与所选项目相关的数据,但我想选择一个子字符串/元素,比如从
{name=”中提取unamexyz_name”,uname=“xyz_user”,desig=“xyz_desig”}
光标不起作用。谢谢,但是
无法解析方法getString()
对象关联的唯一方法是
getClass()
对象是一种泛型类型。位置很重要。获得位置后,您就知道右键单击的位置是什么?如果您想获取该列表项中文本视图的值,无需使用对象,请使用您想要的。如果是TextView tv=list。getItemAtPosition(位置);然后您可以将其转换为字符串…您是否理解了我正在正确获取与listView项关联的文本。我实际上希望检索到数据的一个子部分。例如,检索到的数据显然是一个包含名称和角色的数组。现在,我只想获取数组中的“role”元素。因为,数据是通过这是一个数组,我在网上搜索的是,我可以使用光标检索不同的元素。希望你们现在能找到我。@Baahubali Yayy!我的第一个答案。:)