java - 更新 Listview Item Android Firebase 的值

标签 java android listview firebase onitemclicklistener

我有点菜鸟所以放轻松! 我希望能够更新存储在 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();


                }
            });

最佳答案

欢迎!

与其尝试自己解决 ListViewAdapter 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/

相关文章:

java - 从模板生成 Spring 上下文文件

java - 将 Twitter 数据从 Java 插入到 MySQL

java - 计算字符串中的出现次数并输出按 ocuurence_count desc, name 排序的结果

java - 检查动态创建的类是否是一个 Activity

java - R.Java 不创建

java - 多线程似乎不起作用

android - 从我的 URL 解析 JSON 数据时出错

android - 如何更改 ListView 中复选框的文本?

delphi - 是否可以通过 Delphi 中不同列的标题进行 TListView 搜索?

android - 使用arrayadapter向 ListView 动态添加项目