Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase在将数据对象检索到Listview时返回随机值_Java_Android_Listview_Object_Firebase Realtime Database - Fatal编程技术网

Java Firebase在将数据对象检索到Listview时返回随机值

Java Firebase在将数据对象检索到Listview时返回随机值,java,android,listview,object,firebase-realtime-database,Java,Android,Listview,Object,Firebase Realtime Database,我正在尝试将数据从Firebase检索到Listview中。虽然它确实正确地检索了数据,但它在我的项目ID后显示了一些随机值。我的数据库如下所示: 我正在创建一个对象,其中包含买家下每个字符串中的所有值,然后我希望在Listview Navn和Telefonnr中显示某些值。但如图所示,每次激活活动时,它都会给我一个随机生成的字符串。我的代码看起来像下面所示的买家类/对象: 更新!:已解决,更新的代码将发布给需要它的人: private ListView mUserLis

我正在尝试将数据从Firebase检索到Listview中。虽然它确实正确地检索了数据,但它在我的项目ID后显示了一些随机值。我的数据库如下所示: 我正在创建一个对象,其中包含买家下每个字符串中的所有值,然后我希望在Listview Navn和Telefonnr中显示某些值。但如图所示,每次激活活动时,它都会给我一个随机生成的字符串。我的代码看起来像下面所示的买家类/对象: 更新!:已解决,更新的代码将发布给需要它的人:

            private ListView mUserList;

        private ArrayList<String> mUsernames = new ArrayList<>();

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

            mDatabaseReference = FirebaseDatabase.getInstance().getReference("Buyers");

            mUserList = (ListView) findViewById(R.id.UserListView);

            final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mUsernames);

            mUserList.setAdapter(arrayAdapter);

            mDatabaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {

                        Map<String, String> map = (Map<String, String>) childSnapshot.getValue();
                        Log.v("YourValue,","Map value is:" +map.toString());
                        Log.d("TAG", "onChildAdded:" + dataSnapshot.getKey());
                        Buyers buyerList = new Buyers(map);
                        mUsernames.add(buyerList.getData());
                    }
                    arrayAdapter.notifyDataSetChanged();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
这是买家类别:

public class Buyers {
private String car_Value;
private String interest;
private String driverLicenseNr;
private String name;
private String personNr;
private String phone_Number;

public Buyers(Map<String,String> map){
    car_Value = map.get("Bil");
    interest = map.get("Interresse");
    driverLicenseNr = map.get("Kørekortnr");
    name = map.get("Navn");
    personNr = map.get("Personnr");
    phone_Number = map.get("Telefonnr");
}
String getData()
{
    return (name + phone_Number);
}

您正在传递一个类的对象列表,其中包含来自数据库的数据,从而打印每个类的id。但这些对象中的每一个都有数据

解决方案:

将mUsernames更改为ArrayList 在BuyerList中创建一个getter,返回要显示的数据 例如:字符串getData{return car_value+interest}; 然后将这些数据添加到您的列表中 mUsernames.addbuyerList.getData;
我猜在适配器中,您正在显示买家对象。要获取所需的值,请重写ToString函数或为所需的值添加getter。请将适配器的代码添加到问题中。这就是全部内容,您可以看到所有内容。arrayAdapter就是这样使用的,我猜,我是新手,刚看了一些视频,但它对我来说不起作用。老实说,除了返回中的void之外,这确实很有意义,因为void不能返回:我尝试将它与字符串getData一起使用。。。相反,但似乎不起作用。你有办法让那部分工作吗?根据代码,mUsernames不是已经是一个ArrayList了吗?或者我误解了什么吗?将ArrayList更改为字符串而不是字符串成功了!我的更新代码在说明中,非常感谢!