2017-04-03 151 views
0

我想在一個使用TabLayout(Fragment)的活動中合併Recyclerview,以便我可以在不同的列表之間滑動。然而到目前爲止,我只能實現ListActivity或標籤活動(來自android studio的標準活動),但不能同時實現。如果有人可以幫忙,會很高興。如何結合Recyclerview和Fragment?

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

爲什麼你不使用viewpager? – Mucahit

回答

1

嘗試按照如下步驟進行:

  1. 設計您activity_main.xmlToolbarTabLayoutViewPager
  2. 設計佈局XML與RecyclerView爲要顯示每個Tab內容的片段。
  3. 使用FragmentPagerAdapter使用ViewPager.setAdapter(FragmentPagerAdapter)
  4. 使用TabLayout.setupWithViewPager(ViewPager)給能力ViewPagerTabLayout功能上下工夫ViewPager
  5. 套裝FragmentPagerAdapter填充FragmentsViewPager
  6. 對於個人Fragment,創建RecyclerViewAdapter數據填充到RecyclerView

下面是一個簡單tutorial。希望這會有所幫助〜

+0

沒有什麼可添加的!這個步驟後面的例子可以在這裏找到:http://www.journaldev.com/12958/android-tablayout-viewpager –