2010-10-08 103 views
2

首先,我是Android新手。所以这可能是一个非常简单的问题,但我自己找不到答案。在ListView项目上存储数据

我有两个活动,我填充第一与一个用户名和我从远程请求接收其它数据,而第二个被用来显示所选择的用户的详细信息。

因此,在某种程度上,我需要使用ListView项目的用户记录相关联,这样我就可以使用意图通过其中的一些信息的第二个活动。我不确定它是对还是错,但我发现我需要创建一个自定义的ArrayAdapter。所以,我创建了一个用户等级:

class User { 
    public String id; 
    public String name; 
} 

,我想现在我需要写类似:

class UserAdapter extends ArrayAdapter<User> { 
    ... 
} 

基本上在第一观看我想显示:

John Doe 
Mike Brown 
... 

第二个将基于User.id另一个请求并显示如用户的一些信息:

John Doe, 45, San Francisco 

我无法找到一个类似的例子,所以我不是很肯定我怎么能做到这一点。任何参考也会有所帮助。

谢谢。

回答

2

在你UserAdapter,视图设置为有用的东西的标签的“getView”的方法...

view.setTag(id); 

然后你就可以拉出该信息被点击的东西时,...

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Integer id = (Integer) view.getTag(); 
    // ... 
} 
0

我会建议使用的意图,只传递所选用户的ID。在第二个活动中,您可以使用该ID从数据库或您正在使用的任何内容中获取其余信息。意图不适合发送大量数据。

+0

是的,这就是我打算做的。但要了解哪个项目被点击,该项目和用户记录必须关联。所以我的问题是如何将该用户记录与ListView项目相关联。 – pocoa 2010-10-08 02:11:34

1

假设你已经有数据填充一个数组列表,你想:

ArrayList<User> 

所以哟乌尔定制一个ArrayAdapter类,你应该有这些:

private ArrayList<User> items; 
private Context context; 

public UserAdapter (Context context, int textViewResourceId, ArrayList<User> items) { 
                super(context, textViewResourceId, items); 
                this.items = items; 
                this.context = context; 
} 
@Override 
public View getView(int position, View view, ViewGroup parent) { 
    User u = items.get(position); 
    // Then you can get each user detail and 
    // display it however you like in your view 
    u.getId(); 
    u.getName(); 
    // Assuming you have setters and getters setup in your User class 
    return view; 
} 

在你OnClickItemListener,您可以使用“位置”来确定单击的是哪个项目,并用它来检索用户对象。一旦拥有它,您应该可以检索到其他详细信息。

相关问题