Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ID与Android列表视图行关联_Android_Android Listview_Android Ksoap2 - Fatal编程技术网

将ID与Android列表视图行关联

将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();

我有一个用户对象数组。我只在列表视图中显示名字和姓氏(通过我实现的toString()方法)

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();
}
});

谢谢!我非常喜欢你的解决方案。另一个可行,我可能还需要用于其他目的。所以两者都是有用的。