作为 API 调用的结果,我收到了一个 Hashmap <String,Integer>
. onResponse
内方法,我可以在控制台输出如下:
public void onResponse(Call<UsersStackOverflow> call, Response<UsersStackOverflow> response) {
int code = response.code();
List<User> users = response.body().getUsers();
myDataSource.clear();
myDataSource.addAll(response.body().getUsers());
myAdapter.notifyDataSetChanged();
for (User user: users) {
System.out.println(
"Name: " + user.getUserName() +
"; Location: " + user.getLocation() +
"; Reputation: " + user.getReputation()
);
System.out.println("Badges: ");
for (Map.Entry<String, Integer> entry : user.getBadges().entrySet()) {
String key = entry.getKey().toString();
Integer value = entry.getValue();
System.out.println(key + " : " + value);
}
}
我想通过 RecyclerView
在不同的行中显示每条数据. onBindViewHolder()
内适配器,我这样显示数据:
@Override
public void onBindViewHolder(UsersViewHolder holder, int position) {
holder.userLocation.setText("Location: "+users.get(position).getLocation());
holder.userReputation.setText("Reputation: " + users.get(position).getReputation());
holder.userName.setText("Username: " + users.get(position).getUserName());
holder.goldenBdge.setText(
(users.get(position).getBadges().keySet().toString()));
}
但是我应该如何从 HashMap 中提取键值对呢?谢谢!
最佳答案
users.get(position).getBadges().entrySet()
返回包含此 Map 中所有映射的 Set。每个映射都是 Map.Entry 的一个实例。由于 Set 受此 Map 支持,因此其中一个的更改将反射(reflect)在另一个中。
我想这就是你如何遍历对:
Iterator<Map.Entry<Integer,String>> it = hash.entrySet().iterator();
do{
Map.Entry<Integer,String> pair = it.next();
pair.getKey();
pair.getValue();
}while(it.hasNext());
关于android - 如何将返回的 JSON 的 HashMap 值归因于 RecyclerView 行中的 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684380/