Java 在ListView项上存储数据
首先,我是Android新手。所以这可能是一个非常简单的问题,但我自己找不到答案 我有两个活动,第一个是用用户名和从远程请求收到的其他数据填充,第二个是用来显示所选用户的详细信息 因此,在某种程度上,我需要将这些用户记录与ListView项相关联,这样我就可以使用Intent将其中的一些信息传递给第二个活动。我不确定这是对还是错,但我发现我需要创建一个自定义ArrayAdapter。因此,我创建了一个用户类:Java 在ListView项上存储数据,java,android,listview,listviewitem,Java,Android,Listview,Listviewitem,首先,我是Android新手。所以这可能是一个非常简单的问题,但我自己找不到答案 我有两个活动,第一个是用用户名和从远程请求收到的其他数据填充,第二个是用来显示所选用户的详细信息 因此,在某种程度上,我需要将这些用户记录与ListView项相关联,这样我就可以使用Intent将其中的一些信息传递给第二个活动。我不确定这是对还是错,但我发现我需要创建一个自定义ArrayAdapter。因此,我创建了一个用户类: class User { public String id; public
class User {
public String id;
public String name;
}
我想现在我需要写一些东西,比如:
class UserAdapter extends ArrayAdapter<User> {
...
}
第二个将基于User.id发出另一个请求,并显示有关用户的一些信息,如:
John Doe, 45, San Francisco
我找不到类似的例子,所以我不太确定如何才能做到这一点。任何参考资料也会有所帮助
谢谢。我建议使用Intent只传递所选用户的id。在第二个活动中,您可以使用该id从数据库或您正在使用的任何东西中获取其余信息。意图并不适合发送大量数据。在UserAdapter的“getView”方法中,将视图的标记设置为有用的内容
view.setTag(id);
然后,当单击某个内容时,您可以将此信息拉出
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Integer id = (Integer) view.getTag();
// ...
}
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Integer id=(Integer)view.getTag();
// ...
}
假设您已经有一个填充了所需数据的数组列表:
ArrayList<User>
ArrayList
因此,在您的自定义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;
}
私有数组列表项;
私人语境;
公共用户适配器(上下文上下文、int textViewResourceId、ArrayList项){
super(上下文、textViewResourceId、项);
这个项目=项目;
this.context=上下文;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
用户u=项目。获取(位置);
//然后您可以获得每个用户的详细信息和
//在视图中以您喜欢的方式显示它
u、 getId();
u、 getName();
//假设在用户类中设置了setter和getter
返回视图;
}
在OnClickItemListener中,可以使用“位置”来确定单击了哪个项,并使用它来检索用户对象。您应该能够在获得其他详细信息后检索它。是的,这就是我计划要做的。但要了解单击了哪个项目,必须将该项目和用户记录关联起来。因此,我的问题是如何将该用户记录与ListView项相关联。
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;
}