【问题标题】:Updating value of Listview Item Android Firebase更新 Listview Item Android Firebase 的值
【发布时间】:2016-02-29 20:46:49
【问题描述】:

我有点菜鸟,所以放轻松! 我希望能够更新存储在 Firebase 中的字符串的值。 我正在使用 onItemClickListener ,这样当单击列表视图中的特定项目时,它会将值更新为当前值+“参加”。

我知道,为了做到这一点,我必须从 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();


                }
            });

【问题讨论】:

    标签: java android listview firebase onitemclicklistener


    【解决方案1】:

    欢迎!

    与其试图自己争吵ListViewAdapteryou 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 中填充视图。

    【讨论】:

    • 你可能应该添加如何现在实现onItemClick():adapter.getRef(position).child("text").setValue("new text")
    • 非常感谢。我马上试试。
    • 我现在如何实现 onItemClick()?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多