【问题标题】:how to pass multiple value to firebase on click of listview单击listview时如何将多个值传递给firebase
【发布时间】:2021-11-20 15:48:22
【问题描述】:

我想在单击列表视图中的项目时将数据存储在 Firebase 中。 我的列表视图活动如下。任何人都可以请帮忙。我是安卓工作室的新手

package android.example.mentoring_app;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;

public class secondSem extends AppCompatActivity {
    ListView Lview;
    ArrayList<String> Alist=new ArrayList<>();
    DatabaseReference mRef;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second_sem);
        ArrayAdapter<String> ad=new ArrayAdapter<>(secondSem.this, android.R.layout.simple_list_item_1,Alist);
        Lview=findViewById(R.id.scndl);
        Lview.setAdapter(ad);
        mRef= FirebaseDatabase.getInstance().getReference("students").child("2nd sem");
        mRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull @NotNull DataSnapshot snapshot, @Nullable @org.jetbrains.annotations.Nullable String previousChildName) {
                String value=snapshot.getValue(String.class);
                Alist.add(value);
                ad.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(@NonNull @NotNull DataSnapshot snapshot, @Nullable @org.jetbrains.annotations.Nullable String previousChildName) {
                ad.notifyDataSetChanged();
            }

            @Override
            public void onChildRemoved(@NonNull @NotNull DataSnapshot snapshot) {

            }

            @Override
            public void onChildMoved(@NonNull @NotNull DataSnapshot snapshot, @Nullable @org.jetbrains.annotations.Nullable String previousChildName) {

            }

            @Override
            public void onCancelled(@NonNull @NotNull DatabaseError error) {

            }
        });
    }
}

或者有没有其他方法可以选择动态打印的项目并存储在 firebase 数据库中。比如使用复选框或其他东西...... 任何形式的帮助表示赞赏:)

【问题讨论】:

  • 这段代码中到底有什么不符合您的预期?告诉我们共享代码有什么问题。你有什么错误吗?

标签: java android firebase android-listview onitemselectedlistener


【解决方案1】:

试试这个

Lview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // on listView item clicked
            myRef.setValue(ad.getItem(position));
        }
    });

【讨论】:

  • 试过这个......但每次点击该项目时,它都会存储在 Firebase 中。同一个项目有多个数据。如何使其唯一
  • 我不确定我是否理解了这个问题,您想单独保存和更新每个项目吗?比如: item_1_value : 1 item_2_value : 2 并在您单击项目时更新此值?
猜你喜欢
  • 2019-05-08
  • 2018-10-19
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2020-05-15
  • 2020-05-12
相关资源
最近更新 更多