我正在嘗試將 ArrayList 中的一個值放入我的 listView,以下是詳細資訊。
這是 ArrayList 資訊的示例:
private static final ArrayList<User> users = new ArrayList<User>(){{
add(new User("Nevin Hobden",38,"Male","Friend","New Mexico","NM"));
add(new User("Stillman Macken",32,"Male","Friend","Arizona","AZ"));
add(new User("Stevy Ranscomb",36,"Male","Friend","Arizona","AZ"));
add(new User("Lynelle Garstang",22,"Female","Family","California","NE"));
我想從用戶 ArrayList 中獲取狀態資料,例如。我只希望將“新墨西哥”、“亞利桑那”、“亞利桑那”和“加利福尼亞”資料顯示在我的 listView 上
如果可能的話,我還想洗掉重復項并按升序排序
Arizona
California
New Mexico
下面是我的代碼
ListView stateListView;
ArrayList<DataServices.User> stateList = DataServices.getAllUsers();
ArrayAdapter<DataServices> arrayListAdapter;
stateListView = view.findViewById(R.id.stateListView);
arrayListAdapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,android.R.id.text1, stateList);
stateListView.setAdapter(arrayListAdapter);
我知道我不應該在 arrayAdapter 中使用 stateList 但是我不知道我應該如何更改那部分,感謝任何幫助。謝謝!
uj5u.com熱心網友回復:
如果你想得到一個狀態串列,你可以遍歷原始串列并將狀態放入一個ArrayList<String>,像這樣
ArrayList<String> states = new ArrayList<>();
for(DataServices.User user : users) {
states.add(user.state);
}
如果你只想要獨特的狀態,你可以只使用HashSet那里。集消除重復。
HashSet<String> states = new HashSet<>();
for(User user : users) {
states.add(user.state);
}
// then convert it back to a list
ArrayList<String> unique_states = new ArrayList<>(states);
如果你想讓它被排序,你可以使用Collections.sort排序串列
Collections.sort(unique_states);
如果你的 Java 版本支持它,你也可以用更少的流來做這件事,但它完成了同樣的事情
List<String> statesList = users.stream()
.map(u -> u.state)
.collect(Collectors.toList());
Set<String> statesSet = users.stream()
.map(u -> u.state)
.collect(Collectors.toSet());
// Or in one-line
List<String> unique_states = users.stream()
.map(u -> u.state)
.collect(Collectors.toSet())
.stream()
.sorted()
.collect(Collectors.toList());
uj5u.com熱心網友回復:
請不要使用 ListView。ListView 已經過時,不如 RecyclerView 高效。這是一個很好的檔案如何使用 RecyclerView
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490209.html
