Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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实现自定义列表适配器_Java_Android_Listview_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 使用Firebase实现自定义列表适配器

Java 使用Firebase实现自定义列表适配器,java,android,listview,firebase,firebase-realtime-database,Java,Android,Listview,Firebase,Firebase Realtime Database,我想将包含文本和图像的自定义适配器链接到Firebase,以便从Firebase中检索listView项中的两个(文本和图像) 这是我当前的代码: // Get ListView object from xml final ListView listView = (ListView) findViewById(R.id.listView); // Create a new Adapters final ArrayAdapter<String> adapter

我想将包含文本和图像的自定义适配器链接到Firebase,以便从Firebase中检索
listView
项中的两个(文本和图像)

这是我当前的代码:

// Get ListView object from xml
    final ListView listView = (ListView) findViewById(R.id.listView);

    // Create a new Adapters
    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
            R.layout.custom_list_view_item, R.id.text);
    final ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, R.id.text);
    final ArrayAdapter<String> adapter3 = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, R.id.text);


    listView.setAdapter(adapter);



    // Enabling Offline
    if (Firebase.getDefaultConfig().isPersistenceEnabled() == false)
        Firebase.getDefaultConfig().setPersistenceEnabled(true);
    // Use Firebase
    Firebase.setAndroidContext(this);

    new Firebase(firebaseURL)
            .addChildEventListener(new ChildEventListener() {
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    adapter.add((String) dataSnapshot.child("text").getValue());
                    adapter2.add((String) dataSnapshot.child("image0").getValue());
                    adapter3.add((String) dataSnapshot.child("image1").getValue());

                }

                public void onChildRemoved(DataSnapshot dataSnapshot) {
                    adapter.remove((String) dataSnapshot.child("text").getValue());
                    adapter2.remove((String) dataSnapshot.child("image0").getValue());
                    adapter3.remove((String) dataSnapshot.child("image1").getValue());

                }

                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                }

                public void onChildMoved(DataSnapshot dataSnapshot, String s) {
                }

                public void onCancelled(FirebaseError firebaseError) {
                }
            });
    // Open details when items when clicked
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                                final int position, long id) {

            new Firebase(firebaseURL)
                    .orderByChild("text")
                    .equalTo((String) listView.getItemAtPosition(position))
                    .addListenerForSingleValueEvent(new ValueEventListener() {
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if (dataSnapshot.hasChildren()) {
                                DataSnapshot firstChild = dataSnapshot.getChildren().iterator().next();
                                firstChild.getRef();
                                String d = adapter.getItem(position);
                                String image0 = adapter2.getItem(position);
                                String image1 = adapter3.getItem(position);


                                Intent i = new Intent(List_mall.this, Details_malls.class);
                                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                i.putExtra("text", d);
                                i.putExtra("image0", image0);
                                i.putExtra("image1", image1);

                                startActivity(i);

                            }
                        }

                        public void onCancelled(FirebaseError firebaseError) {
                        }
                    });
        }
    });
//从xml获取ListView对象
最终ListView ListView=(ListView)findViewById(R.id.ListView);
//创建一个新的适配器
最终ArrayAdapter适配器=新的ArrayAdapter(此,
R.layout.custom_list_view_item,R.id.text);
最终阵列适配器2=新阵列适配器(此,
android.R.layout.simple_list_item_1,R.id.text);
最终阵列适配器3=新阵列适配器(此,
android.R.layout.simple_list_item_1,R.id.text);
setAdapter(适配器);
//启用脱机
if(Firebase.getDefaultConfig().isPersistenceEnabled()==false)
Firebase.getDefaultConfig().setPersistenceEnabled(true);
//使用火基
Firebase.setAndroidContext(this);
新Firebase(firebaseURL)
.addChildEventListener(新的ChildEventListener(){
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
add((字符串)dataSnapshot.child(“text”).getValue());
adapter2.add((字符串)dataSnapshot.child(“image0”).getValue());
adapter3.add((字符串)dataSnapshot.child(“image1”).getValue());
}
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
adapter.remove((字符串)dataSnapshot.child(“text”).getValue());
adapter2.remove((字符串)dataSnapshot.child(“image0”).getValue());
adapter3.remove((字符串)dataSnapshot.child(“image1”).getValue());
}
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
取消后的公共无效(FirebaseError FirebaseError){
}
});
//单击项目时打开详细信息
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
最终整数位置,长id){
新Firebase(firebaseURL)
.orderByChild(“文本”)
.equalTo((字符串)listView.getItemAtPosition(位置))
.addListenerForSingleValueEvent(新的ValueEventListener(){
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.hasChildren()){
DataSnapshot firstChild=DataSnapshot.getChildren().iterator().next();
firstChild.getRef();
字符串d=适配器.getItem(位置);
字符串image0=adapter2.getItem(位置);
字符串image1=adapter3.getItem(位置);
意向i=新意向(列表、详细信息、类别);
i、 设置标志(意图、标志、活动、新任务);
i、 putExtra(“文本”,d);
i、 putExtra(“image0”,image0);
i、 putExtra(“图像1”,图像1);
星触觉(i);
}
}
取消后的公共无效(FirebaseError FirebaseError){
}
});
}
});

您需要一个适配器,而不是三个。从这里开始@cricket\u 007感谢您提供的有用链接,现在我了解了自定义适配器,但仍然无法在我的代码中用Firebase替换它,请您提供更多说明?就像您需要一个
模型
类。您的
dataSnapshot
表示
Model
。然后将一个
ArrayAdapter
设置到listView。@cricket_007谢谢,您能为我提供Firebase自定义列表视图的教程吗。非常感谢您的支持。请先使用自定义适配器。稍后添加Firebase。这是我的建议,这是我的第一个链接向您展示的。您需要一个适配器,而不是三个。从这里开始@cricket\u 007感谢您提供的有用链接,现在我了解了自定义适配器,但仍然无法在我的代码中用Firebase替换它,请您提供更多说明?就像您需要一个
模型
类。您的
dataSnapshot
表示
Model
。然后将一个
ArrayAdapter
设置到listView。@cricket_007谢谢,您能为我提供Firebase自定义列表视图的教程吗。非常感谢您的支持。请先使用自定义适配器。稍后添加Firebase。这是我的建议,这就是我的第一个链接向您展示的内容。