首先,我是Android新手。所以这可能是一个非常简单的问题,但我自己找不到答案。
我有两个Activity,我正在填写第一个用户名和我从远程请求收到的其他数据,第二个用于显示所选用户的详细信息。
因此,在某种程度上,我需要将这些用户记录与ListView项相关联,因此我可以使用Intent将这些信息传递给第二个Activity。我不确定它是对还是错,但我发现我需要创建一个自定义的ArrayAdapter。所以我创建了一个User类:
class User {
public String id;
public String name;
}
我猜我现在需要写一些类似的东西:
class UserAdapter extends ArrayAdapter<User> {
...
}
基本上在我要显示的第一个视图中:
John Doe
Mike Brown
...
第二个将根据User.id发出另一个请求,并显示有关用户的一些信息,如:
John Doe, 45, San Francisco
我找不到类似的例子,所以我不太清楚我该怎么做。任何参考也会有所帮助。
感谢。
答案 0 :(得分:2)
在UserAdapter的“getView”方法中,将视图的标记设置为有用的内容......
view.setTag(id);
然后,您可以在点击某些内容时提取此信息...
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Integer id = (Integer) view.getTag();
// ...
}
答案 1 :(得分: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中,您可以使用“position”来确定单击了哪个项目并使用它来检索User对象。您应该能够在获得其他详细信息后检索它们。
答案 2 :(得分:0)
我建议使用Intent只传递所选用户的id。在第二个活动中,您可以使用该ID从数据库或您正在使用的任何内容中获取其余信息。意图并不适合发送大量数据。