[英]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.