将ID与Android列表视图行关联
我有一个用户对象数组。我只在列表视图中显示名字和姓氏(通过我实现的toString()方法)将ID与Android列表视图行关联,android,android-listview,android-ksoap2,Android,Android Listview,Android Ksoap2,我有一个用户对象数组。我只在列表视图中显示名字和姓氏(通过我实现的toString()方法) public class User { public int UserID; public String FirstName; public String LastName; @Override public String toString() { StringBuilder result = new StringBuilder();
public class User
{
public int UserID;
public String FirstName;
public String LastName;
@Override public String toString() {
StringBuilder result = new StringBuilder();
result.append(this.FirstName + " " + this.LastName);
return result.toString();
}
}
ArrayAdapter<User> adapter = new ArrayAdapter<User>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, users); // Users is defined as User[] users; somewhere in the code.
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener ()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
// Here I would like to get the UserID
}
});
我使用以下适配器定义将用户对象数组绑定到列表视图
public class User
{
public int UserID;
public String FirstName;
public String LastName;
@Override public String toString() {
StringBuilder result = new StringBuilder();
result.append(this.FirstName + " " + this.LastName);
return result.toString();
}
}
ArrayAdapter<User> adapter = new ArrayAdapter<User>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, users); // Users is defined as User[] users; somewhere in the code.
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener ()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
// Here I would like to get the UserID
}
});
ArrayAdapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,android.R.id.text1,users);//用户定义为用户[]个用户;代码中的某个地方。
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id)
{
//在这里,我想获得用户ID
}
});
如果你需要更多的背景资料。我的用户对象数组(users)是通过ksoap2webservice调用填充的。我知道如果我使用SimpleCursorAdapter,public void中的long id(AdapterView父项、视图视图、int位置、long id)将自动成为我感兴趣的id。但事实并非如此。非常感谢您的帮助。您只需从列表中获取
用户
对象即可
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
User user = (User)parent.getItemAtPosition(position);
long userId = user.UserID;
}
我没有测试这个,但我认为它应该能工作。我也不建议使用
users[position]
。最好依靠getItem(position)
,以防底层数据从原始用户数组更改。您应该尝试以下方法
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(getApplicationContext(), adapter.UserId[position], Toast.LENGTH_SHORT).show();
}
});
listView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
Toast.makeText(getApplicationContext(),adapter.UserId[position],Toast.LENGTH\u SHORT.show();
}
});
谢谢!我非常喜欢你的解决方案。另一个可行,我可能还需要用于其他目的。所以两者都是有用的。