简体   繁体   English

如何结合Recyclerview和Fragment?

[英]How to combine Recyclerview and Fragment?

I would like to combine a Recyclerview in an Activity that uses a TabLayout(Fragment), so that I can swipe between the different lists. 我想在一个使用TabLayout(Fragment)的Activity中合并一个Recyclerview,以便我可以在不同的列表之间滑动。 However so far I only achieve to do either a ListActivity OR the tabbed activity (the standard one from android studio) but not both. 但是到目前为止,我只实现了执行ListActivity或选项卡式活动(android studio中的标准活动),但没有两者都做。 Would be glad if someone could help on this. 如果有人可以提供帮助,我们将非常高兴。

AdapterFish.java AdapterFish.java

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.Collections;
import java.util.List;

public class AdapterFish extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context context;
    private LayoutInflater inflater;
    List<DataFish> data= Collections.emptyList();
    DataFish current;
    int currentPos=0;

    // create constructor to innitilize context and data sent from MainActivity
    public AdapterFish(Context context, List<DataFish> data){
        this.context=context;
        inflater= LayoutInflater.from(context);
        this.data=data;
    }

    // Inflate the layout when viewholder created

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=inflater.inflate(R.layout.tab2, parent,false);
        MyHolder holder=new MyHolder(view);
        return holder;
    }

    // Bind data
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        // Get current position of item in recyclerview to bind data and assign values from list
        MyHolder myHolder= (MyHolder) holder;
        DataFish current=data.get(position);
        myHolder.textmatkul.setText(current.matkul);
        myHolder.textwaktu_batal.setText("Tanggal Batal: " + current.waktu_batal);
        myHolder.textwaktu_pengganti.setText("Tanggal Pengganti: " + current.waktu_pengganti);
        myHolder.textdosen.setText("Nama Dosen: " + current.dosen);
        myHolder.textruang.setText("Ruang: " + current.ruang);
        myHolder.textalasan.setText("Alasan: " + current.alasan);
    }

    // return total item from List
    @Override
    public int getItemCount() {
        return data.size();
    }

    class MyHolder extends RecyclerView.ViewHolder{

        TextView textmatkul;
        TextView textwaktu_batal;
        TextView textwaktu_pengganti;
        TextView textdosen;
        TextView textruang;
        TextView textalasan;

        // create constructor to get widget reference
        public MyHolder(View itemView) {
            super(itemView);
            textmatkul= (TextView) itemView.findViewById(R.id.textmatkul);
            textwaktu_batal = (TextView) itemView.findViewById(R.id.textwaktu_batal);
            textwaktu_pengganti = (TextView) itemView.findViewById(R.id.textwaktu_pengganti);
            textdosen = (TextView) itemView.findViewById(R.id.textdosen);
            textalasan = (TextView) itemView.findViewById(R.id.textalasan);
            textruang = (TextView) itemView.findViewById(R.id.textruang);
        }

    }
}

Tab2.java : Tab2.java

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by Lamberto on 03/04/2017.
 */

public class Tab2 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.tab2, container, false);
    }
}

Try to follow below steps: 尝试执行以下步骤:

  1. Design your activity_main.xml with Toolbar , TabLayout and ViewPager 使用ToolbarTabLayoutViewPager设计您的activity_main.xml
  2. Design layout XML's with RecyclerView for your fragments that you want to show for each Tab content. 使用RecyclerView设计要为每个Tab内容显示的片段的布局XML。
  3. Use FragmentPagerAdapter to populate Fragments on ViewPager 使用FragmentPagerAdapter填充FragmentsViewPager
  4. Set FragmentPagerAdapter to ViewPager using ViewPager.setAdapter(FragmentPagerAdapter) 使用ViewPager.setAdapter(FragmentPagerAdapter)FragmentPagerAdapter设置为ViewPager
  5. Use TabLayout.setupWithViewPager(ViewPager) to give ability to ViewPager to work with TabLayout functionalities. 使用TabLayout.setupWithViewPager(ViewPager)使ViewPager可以使用TabLayout功能。
  6. For individual Fragment , create RecyclerViewAdapter to populate data to RecyclerView 对于单个Fragment ,创建RecyclerViewAdapter以将数据填充到RecyclerView

Here is a simple tutorial . 这是一个简单的教程 Hope this will help~ 希望这会有所帮助〜

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM