繁体   English   中英

如何结合Recyclerview和Fragment?

[英]How to combine Recyclerview and Fragment?

我想在一个使用TabLayout(Fragment)的Activity中合并一个Recyclerview,以便我可以在不同的列表之间滑动。 但是到目前为止,我只实现了执行ListActivity或选项卡式活动(android studio中的标准活动),但没有两者都做。 如果有人可以提供帮助,我们将非常高兴。

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

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);
    }
}

尝试执行以下步骤:

  1. 使用ToolbarTabLayoutViewPager设计您的activity_main.xml
  2. 使用RecyclerView设计要为每个Tab内容显示的片段的布局XML。
  3. 使用FragmentPagerAdapter填充FragmentsViewPager
  4. 使用ViewPager.setAdapter(FragmentPagerAdapter)FragmentPagerAdapter设置为ViewPager
  5. 使用TabLayout.setupWithViewPager(ViewPager)使ViewPager可以使用TabLayout功能。
  6. 对于单个Fragment ,创建RecyclerViewAdapter以将数据填充到RecyclerView

这是一个简单的教程 希望这会有所帮助〜

暂无
暂无

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

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