私はJavaプロジェクトでFirebaseを使用していますが、データを照会するリスナーを追加してからDefaultListModel
に要素を追加しましたが、JList
は古い項目のみを削除します新しいデータを表示します。
マイJList
DefaultListModel.addElement()はJListを更新しません
usersData = new DefaultListModel<>();
JList<String> users = new JList<>(usersData);
users.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
users.setSelectedIndex(0);
users.setVisibleRowCount(5);
JScrollPane fruitListScrollPane = new JScrollPane(users);
add(fruitListScrollPane, BorderLayout.SOUTH);
と私のfirebase値リスナー
firebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
// remove all old elements from DefaultListModel
usersData.removeAllElements();
// get the data from snapshot
for (DataSnapshot userSnapshot : snapshot.getChildren()) {
User user = userSnapshot.getValue(User.class);
String userInfo = "Username: " + user.getUsername() + " & Password: " + user.getPassword();
// add the info to the model
usersData.addElement(userInfo);
// print the info
System.out.println(userInfo);
}
}
@Override
public void onCancelled(FirebaseError error) {
}
});
のおかげだから 'usersData.removeAllElementsは、()'が実行されますか?しかし、あなたは 'for'ループに入ることはありませんか? –
コンソールに 'userInfo'文字列が入っていないので、DefaultListModel' usersData'に新しい要素を追加しても 'JList'が更新されません。 – SaNtoRiaN