【问题标题】:How to update a list view taken from a database with no user accounts如何更新从没有用户帐户的数据库中获取的列表视图
【发布时间】:2019-11-18 01:08:49
【问题描述】:

我当前的应用程序获取客户详细信息,将它们发送到实时 Firebase 数据库,切换活动按钮将用户带到客户信息页面,其中显示数据库中的所有数据,我想知道是否可以更新特定用户无需使用身份验证以使用此应用程序的店主而不是客户身份登录。

我发现的所有视频都使用允许更新用户详细信息的 firebase 身份验证,但我的应用将所有数据库数据列为没有特定登录用户。

下面是我的类,它接收数据库信息并将其显示在屏幕上

public class CustomerDataRetrieved extends AppCompatActivity {

    private ListView listView;
    DatabaseReference databaseReference;
    Firebase firebase;
    List<CustomerName> customerNameList;
    public static final String Database_Path = "Customer Details";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_customer_data_retrieved);


        listView = (ListView) findViewById(R.id.list_view);

        firebase = new Firebase(Firebase_Server_URL);

        databaseReference = FirebaseDatabase.getInstance().getReference(Database_Path);

        customerNameList = new ArrayList<>();



    }

    @Override
    protected void onStart() {
        super.onStart();
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot customerSnapshot : dataSnapshot.getChildren()) {

                    CustomerName customers = customerSnapshot.getValue(CustomerName.class);
                    customerNameList.add(customers);
                }
                CustomerInfoAdapter customerInfoAdapter = new CustomerInfoAdapter(CustomerDataRetrieved.this,customerNameList);
                listView.setAdapter(customerInfoAdapter);

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}

如果这有帮助,这是我的客户信息活动的图像,它使用列表视图显示数据库中的所有数据,我想知道是否可以通过我的应用程序更新每个用户的特定信息,因为例如,如果客户报价发生变化,或联系电话发生变化

【问题讨论】:

    标签: android arraylist firebase-realtime-database android-listview


    【解决方案1】:

    为了更新数据库中的特定节点,您需要知道一些标识该节点的信息。存储用户数据时,通常是用户的 UID。但是,如果您没有使用 Firebase 身份验证,则可以是其他任何标识要更新其节点的用户的内容。

    除了知道路径之外,还必须有更新节点的权限。这就是您经常看到使用 Firebase 身份验证的 UID 的原因,因为它允许根据用户身份保护对数据的访问。如果您不使用 Firebase 身份验证,则必须提出不同的方案来保护您的数据。

    【讨论】:

    • 当您说其他任何标识您希望更新其节点的用户时,我将如何处理?从技术上讲,输入的所有客户数据都使用相同的字段,即名字、自行车收集日期、报价维修价格等……我如何确保用户说出正在更新的联系电话是正确的?我得到的只是数据库中所有内容的列表?
    • 你需要“知道”一些可以唯一标识他们的东西。通常那是他们的 UID,Firebase 确保它不会被欺骗。如果您不使用 Firebase 身份验证,则需要自行处理。
    • 使用 Firebase 身份验证时,是否可以使用所有者(一个帐户)登录,然后能够选择特定的客户详细信息并编辑您选择的任何人?还是客户详细信息要求每个客户都有自己的登录信息才能更新他们的信息?
    • 您可以指定某个用户为“应用程序管理员”,并据此授予他们不同的访问权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多