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