簡體   English   中英

將 ViewPager、CardView 和 RecyclerView 與 Fragments 一起使用

[英]Using ViewPager, CardView and RecyclerView with Fragments

我想制作一個餐廳菜單,其中有 3 頁(1 頁用於肉類課程,1 用於魚類課程,1 用於飲料),我可以在它們之間滑動。

列表應該在如下圖所示的卡片內:卡片布局(請記住菜餚是葡萄牙語)

數據 Class:

package com.example.avaliacao2;

public class Data {
    public String[] pratos_carne = {"Frango Assado     6,5€", "Bitoque     7€", "Lasanha     6€"};

    public String[] pratos_peixe = {"Douradinhos     5€", "Atum á bolonhesa     7,5€", "Pastéis de bacalhau     6€"};

    public String[] bebidas = {"Água     1€", "Coca-Cola     1€", "Cerveja     1€"};
}

主要活動 Class:

package com.example.avaliacao2;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;

import com.example.avaliacao2.fragments.PageFragment1;
import com.example.avaliacao2.fragments.PageFragment2;
import com.example.avaliacao2.fragments.PageFragment3;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ViewPager pager;
    private PagerAdapter pagerAdapter;

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

        List<Fragment> list = new ArrayList<>();
        list.add(new PageFragment1());
        list.add(new PageFragment2());
        list.add(new PageFragment3());

        pager = findViewById(R.id.pager);
        pagerAdapter = new SlidePagerAdapter(getSupportFragmentManager(), list);

        pager.setAdapter(pagerAdapter);
    }

SlidePagerAdapter Class:

package com.example.avaliacao2;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;

import java.util.List;

public class SlidePagerAdapter extends FragmentStatePagerAdapter {

    private List<Fragment> fragmentList;

    public SlidePagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);
        this.fragmentList = fragmentList;
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentList.size();
    }
}

PageFragment1 Class (除了名稱和 xml 布局之外,所有 3 個片段類都是這樣的):

package com.example.avaliacao2.fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.avaliacao2.R;

public class PageFragment1 extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.page_1, container, false);


        return rootView;
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </androidx.viewpager.widget.ViewPager>
</LinearLayout>

page_1.xml(同樣,除了 TextView 內的文本之外,所有 3 個片段都具有相同的結構):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pratos_de_carne"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="32sp" />
</LinearLayout>

到目前為止,我已經完成了滑動動作和碎片工作,我嘗試研究並沒有找到任何具體的東西。

如果您已經完成了 Pager,您只需要在每個可以滑動的片段中使用一個recyclerView ,並用您的數據列表填充它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM