【发布时间】:2015-08-22 08:55:55
【问题描述】:
我在内部存储中保存了一个字符串数组,我正在使用它从 Parse.com 检索特定用户的名称。这是代码:
SharedPreferences settings = getSharedPreferences("NotificationIDs", Context.MODE_PRIVATE);
Set<String> myStrings = settings.getStringSet("myStrings", new HashSet<String>());
final ListView idList;
idList = (ListView) findViewById(android.R.id.list);
final ArrayAdapter<String> str = new ArrayAdapter<>(getBaseContext(), android.R.layout.simple_list_item_1, new ArrayList<String>());
idList.setAdapter(str);
for(String userIds : myStrings) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
query.getInBackground(userIds, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
String name = parseObject.getString("fullname");
Log.d("These are the names: ", name);
str.add(name);
}
});
}
idList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String names = str.getItem(position);
Toast.makeText(UserListForHistory.this, names, Toast.LENGTH_SHORT).show();
}
});
有没有办法配置它,以便当我单击一个项目时,它会显示保存在“myString”数组中的用户 ID?因为我想显示一个包含特定名称的列表,但单击时我想获取该特定用户的 objectid。 我知道如何做到这一点的唯一方法是将 String UserIds 直接保存到适配器,然后它会在列表中显示 id 而不是名称。
//编辑解决方案
SharedPreferences settings = getSharedPreferences("NotificationIDs", Context.MODE_PRIVATE);
Set<String> myStrings = settings.getStringSet("myStrings", new HashSet<String>());
final List<String> users = new ArrayList<>();
final ListView idList;
idList = (ListView) findViewById(android.R.id.list);
final ArrayAdapter<String> str = new ArrayAdapter<>(getBaseContext(), android.R.layout.simple_list_item_1, new ArrayList<String>());
idList.setAdapter(str);
for(final String userIds : myStrings) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
query.getInBackground(userIds, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
String name = parseObject.getString("fullname");
Log.d("These are the names: ", name);
str.add(name);
users.add(userIds);
}
});
}
idList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String user = users.get(position);
Toast.makeText(UserListForHistory.this, user, Toast.LENGTH_SHORT).show();
}
});
【问题讨论】:
标签: android arrays listview android-listview parse-platform