Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Android FirebaseAdapter到水平滚动视图或旋转木马的自定义适配器_Android_Firebase_Firebase Realtime Database_Android Adapter_Firebaseui - Fatal编程技术网

Android FirebaseAdapter到水平滚动视图或旋转木马的自定义适配器

Android FirebaseAdapter到水平滚动视图或旋转木马的自定义适配器,android,firebase,firebase-realtime-database,android-adapter,firebaseui,Android,Firebase,Firebase Realtime Database,Android Adapter,Firebaseui,我有一个简单的RecyclerView,其中我显示了firebase中的所有产品,但现在我想在旋转木马上显示它们,就像这样,问题是我的ChooseProduct.java类中有所有内容,我想创建一个自定义适配器将这些产品作为旋转木马 首先,我得到的产品如下: FirebaseRecyclerOptions< CardPOJO > options = new FirebaseRecyclerOptions.Builder< CardPOJO >()

我有一个简单的
RecyclerView
,其中我显示了
firebase
中的所有产品,但现在我想在
旋转木马上显示它们,就像这样,问题是我的
ChooseProduct.java
类中有所有内容,我想创建一个自定义
适配器
将这些产品作为
旋转木马

首先,我得到的产品如下:

FirebaseRecyclerOptions< CardPOJO > options =
            new FirebaseRecyclerOptions.Builder< CardPOJO >()
                    .setQuery(products_ref, CardPOJO.class)
                    .build();
我的
.xml
有一个
回收视图
,如下所示:

<android.support.v7.widget.RecyclerView

        android:id="@+id/recycler_view_chooseCard"

        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />
我初始化了它:
carouselPicker=(carouselPicker)findViewById(R.id.carousel)

然后我尝试将
.setAdapter()
FireBaseAdapter
放在一起,但它们不兼容

carouselPicker.setAdapter(adapter);
如果很难做到这一点,请阅读本文
如果这太广泛了,而且很难使用
ViewPager
和那些东西,那么有可能创建一个类似旋转木马的
RecyclerView
?您将项目水平放置,然后将项目放在中间,您可以看到它比其他项目更大。

旋转木马实际上是一个
浏览页面
,这有点令人伤心。在任何情况下,RecyclerView适配器和PagerAdapter是两个完全不同的东西,不能混用。你基本上必须去定制有两个选择

在我看来,第一个是更简单更好的用户体验:只是不要让它变得实时。如果您要在用户只与之进行短暂交互的对话框中显示该视图,那么当旋转木马在没有动画和RecyclerView的所有优点的情况下更新时,将令人困惑。它看起来像这样:

query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        List<CarouselPicker.PickerItem> items = new ArrayList<>();
        for (DataSnapshot child : snapshot.getChildren()) {
            CardPOJO card = child.getValue(CardPOJO.class);
            // Use card
            items.add(new CarouselPicker...);
        }
        mCarouselPicker.setAdapter(new CarouselPicker.CarouselViewAdapter(Activity.this, items, 0));
    }

    // ...
}

希望这有帮助

为什么要投否决票?如果你否决某人,你可以说出原因,这样OP就不会再这样做了;)如果此
carouselPicker.setAdapter(适配器)
不起作用,那么最好只使用自定义适配器而不是FirebaseRecyclerAdapter这就是我要问的,如何创建不同的适配器而不是使用FirebaseRecyclerAdapter查看您的评论。看来@SUPERCILEX的答案涵盖了所有(+1)。@AL.谢谢你在这里提交,但是你知道获取这些物品的其他方法吗?我的意思是,我使用
FirebaseAdapter
很酷,但是像现在一样,我想把这些项目放在水平滚动视图或旋转木马上,我不能把它们放在回收视图或类似的东西上,你知道另一种方法吗?因为现在我有一个正常的列表,其中正确地显示了数据,但现在我想把它放在一个更好的UI上,但我做的很少,所以如果你知道另一种方法,请随意回答:我不会将该信息显示给对话框,我会在库上放一个活动.gif,它只是显示旋转木马,我将在活动中显示一个列表,以防我想实时执行,我应该将这些代码放在哪里?如果我准备好了我的适配器?我尝试了实时解决方案,是的,它显示为一个旋转木马,但问题是我有一个复制的东西,对吗?我有一个FirebaseAdapter,在那里我编程了所有的onBindViewHolder和onCreateViewHolder,等等,使用这个我不能使用它,对吗?是的,我的代码将替换适配器,因为你正在使用旋转木马。确保查看他们的文档:。如果我不使用此旋转木马,我就不能像现在在firebase适配器中一样使用recyclerview自定义适配器?我的意思是,从现在起,我有一个简单的列表视图,但我想让它很酷,所以我想让它像一个水平滚动视图或什么你知道吗?就像我现在看到的那样,我根据它的状态(自由,而不是自由)进行区分,所以我可以放置一个或另一个图像,但像旋转木马一样水平放置?你难住我了?
carouselPicker.setAdapter(adapter);
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        List<CarouselPicker.PickerItem> items = new ArrayList<>();
        for (DataSnapshot child : snapshot.getChildren()) {
            CardPOJO card = child.getValue(CardPOJO.class);
            // Use card
            items.add(new CarouselPicker...);
        }
        mCarouselPicker.setAdapter(new CarouselPicker.CarouselViewAdapter(Activity.this, items, 0));
    }

    // ...
}
final ObservableSnapshotArray<CardPOJO> cards = new FirebaseArray(query, new ClassSnapshotParser<>(CardPOJO.class));
cards.addChangeEventListener(new ChangeEventListener() {
    @Override
    public void onDataChanged() {
        List<CarouselPicker.PickerItem> items = new ArrayList<>();
        for (CardPOJO card : cards) {
            // Use card
            items.add(new CarouselPicker...);
        }
        mCarouselPicker.setAdapter(new CarouselPicker.CarouselViewAdapter(Activity.this, items, 0));
    }
})