我有点菜鸟所以放轻松! 我希望能够更新存储在 Firebase 中的字符串的值。 我正在使用 onItemClickListener,这样当单击 ListView 中的特定项目时,它会将值更新为当前值 +“参加”。
我知道,为了做到这一点,我必须从 ListView 项中获取当前值,然后在单击该项时使用 setter 将其更新为新值。我只是不知道如何实际执行此操作。
提前致谢。
new Firebase("https://amber-fire-8056.firebaseio.com/")
.addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
adapter.add((String) dataSnapshot.child("text").getValue());
}
public void onChildRemoved(DataSnapshot dataSnapshot) {
adapter.remove((String) dataSnapshot.child("text").getValue());
}
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
adapter.add((String) dataSnapshot.child("text").getValue());
System.out.println("Events Have Been Updated");
}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
public void onCancelled(FirebaseError firebaseError) {
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String val =(String) parent.getItemAtPosition(position);
Toast.makeText(MainFBActivity.this, "Attending Event", Toast.LENGTH_SHORT).show();
}
});
最佳答案
欢迎!
与其尝试自己解决 ListView
和 Adapter
, you should use FirebaseUI !
FirebaseUI 提供了一个名为 FirebaseListAdapter
的类,它将为您处理子事件:
ListView messagesView = (ListView) findViewById(R.id.messages_list);
Firebase.setAndroidContext(this);
Firebase ref = new Firebase("https://<my-firebase-app>.firebaseio.com/messages");
FirebaseListAdapter<ChatMessage> adapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class, android.R.layout.two_line_list_item, ref) {
@Override
protected void populateView(View view, ChatMessage chatMessage, int position) {
((TextView)view.findViewById(android.R.id.text1)).setText(chatMessage.getName());
((TextView)view.findViewById(android.R.id.text2)).setText(chatMessage.getMessage());
}
};
messagesView.setAdapter(adapter);
FirebaseListAdapter
在幕后处理子事件并使底层数组与远程更改保持同步。您只需担心在 populateView
中填充 View 。
关于java - 更新 Listview Item Android Firebase 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709297/