如何在RecyclerView中添加多个图像项目类似于Instagrams

时间:2018-04-05 06:16:59

标签: android android-viewpager recyclerview-layout

我有一个recyclerview,在其中我使用单个图像成功地在cardview中显示项目。我希望能够在类似于Instagram的滑块中添加查看cardview中多个图像的功能。

我已使用viewpager和fragment实现了活动中的滑块。

我的recyclerview是一个片段,添加一个viewpager,适配器和嵌套的更多片段似乎很乱,因为你必须通过片段管理器如此深入,我想知道是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用名为AndroidImageSider的库。确保通过设置mDemoSlider.stopAutoCycle();

停止自动幻灯片
<com.daimajia.slider.library.SliderLayout
    android:id="@+id/slider"
    android:layout_width="match_parent"
    android:layout_height="200dp"
/>

HashMap<String,String> url_maps = new HashMap<String, String>();
    url_maps.put("Hannibal", "http://static2.hypable.com/wp-content/uploads/2013/12/hannibal-season-2-release-date.jpg");
    url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png");
    url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg");
    url_maps.put("Game of Thrones", "http://images.boomsbeat.com/data/images/full/19640/game-of-thrones-season-4-jpg.jpg");

    HashMap<String,Integer> file_maps = new HashMap<String, Integer>();
    file_maps.put("Hannibal",R.drawable.hannibal);
    file_maps.put("Big Bang Theory",R.drawable.bigbang);
    file_maps.put("House of Cards",R.drawable.house);
    file_maps.put("Game of Thrones", R.drawable.game_of_thrones);

    for(String name : file_maps.keySet()){
        TextSliderView textSliderView = new TextSliderView(this);
        // initialize a SliderLayout
        textSliderView
                .description(name)
                .image(file_maps.get(name))
                .setScaleType(BaseSliderView.ScaleType.Fit)
                .setOnSliderClickListener(this);

        //add your extra information
        textSliderView.bundle(new Bundle());
        textSliderView.getBundle()
                    .putString("extra",name);

       mDemoSlider.addSlider(textSliderView);
    }
    mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
    mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
    mDemoSlider.setCustomAnimation(new DescriptionAnimation());
    mDemoSlider.setDuration(4000);
    mDemoSlider.addOnPageChangeListener(this);
    ListView l = (ListView)findViewById(R.id.transformers);
    l.setAdapter(new TransformerAdapter(this));
    l.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            mDemoSlider.setPresetTransformer(((TextView) view).getText().toString());
            Toast.makeText(MainActivity.this, ((TextView) view).getText().toString(), Toast.LENGTH_SHORT).show();
        }
    });