import android.os.Parcel;
import android.os.Parcelable;
import java.util.List;
/**
* Created by Dai xueyue on 15/4/23.
*/
public class ContainCategories implements Parcelable {
String title;
String icon;
int id;
List <CategoryBase> child;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<CategoryBase> getChild() {
return child;
}
public void setChild(List<CategoryBase> child) {
this.child = child;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(title);
dest.writeString(icon);
dest.writeInt(id);
dest.writeList(child);
}
public static final Creator<ContainCategories> CREATOR = new Creator<ContainCategories>() {
@Override
public ContainCategories createFromParcel(Parcel source) {
ContainCategories categories = new ContainCategories();
categories.setTitle(source.readString());
categories.setIcon(source.readString());
categories.setId(source.readInt());
categories.setChild(source.readArrayList(List.class.getClassLoader()));
return categories;
}
@Override
public ContainCategories[] newArray(int size) {
return new ContainCategories[size];
}
};
}
第一个 Fragment 核心代码用红色标注
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Created by hbx on 15/4/7.
*/
public class LoveListenNoticeFragment extends NoRecycleViewFragment implements ViewPager.OnPageChangeListener{
private GridView noticeGridView;
LoveListenNoticeAdapter adapter;
CompositeSubscription mainSubs = new CompositeSubscription();
@Override
public View createView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_love_listen_notice, container, false);
// initData();
initNoticeInfo(view);
return view;
}
private void initNoticeInfo(View view) {
noticeGridView = (GridView) view.findViewById(R.id.gv_notice);
View emptyView = view.findViewById(R.id.progress);
noticeGridView.setEmptyView(emptyView);
}
private LoveListenBook getLoveListenBookApi() {
return App.getApi().getLoveListenBookApi();
}
@Override
public void activityCreated(@Nullable Bundle savedInstanceState) {
mainSubs.clear();
mainSubs.add(getLoveListenBookApi().getLoveListenCategoriy()
// .doOnSubscribe(this::showProgressBar)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(( dataResult) -> {
updateUI(dataResult);
}, e -> {
}));
}
private View.OnClickListener listenBookTypeClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null == v.getTag() || !(v.getTag() instanceof ContainCategories)) {
return;
}
ContainCategories categories = (ContainCategories) v.getTag();
LoveListenCategoriesChildFragment categoriesChildFragment = LoveListenCategoriesChildFragment.getInstance(getActivity(), categories);
((MainActivity)getActivity()).push(LoveListenNoticeFragment.class.getName(),categoriesChildFragment);
}
};
public void updateUI(AllCateGoriyObject infos) {
if (null != infos) {
adapter = new LoveListenNoticeAdapter(this.getActivity(), this.listenBookTypeClick);
noticeGridView.setAdapter(adapter);
List<ContainCategories> listInfo = new ArrayList<ContainCategories>();
for (int i = 0; i < infos.getCategories().size(); i++) {
if (i == 6) {
break;
}
listInfo.add(infos.getCategories().get(i));
}
if (0 < listInfo.size()) {
adapter.setList(listInfo);
}
}
}
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
}
@Override
public void onPageScrollStateChanged(int i) {
}
}
第二个 Fragment
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.song1.musicno1.R;
import com.song1.musicno1.fragments.base.BaseFragment;
import com.song1.musicno1.models.lovelisten.ContainCategories;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Dai xueyue on 15/4/27.
*/
public class LoveListenCategoriesChildFragment extends BaseFragment {
List<ContainCategories> categories;
public static LoveListenCategoriesChildFragment getInstance(@NonNull Context context ,
ContainCategories categories) {
Bundle argument = new Bundle();
argument.putParcelable("categories",categories);
return (LoveListenCategoriesChildFragment)
Fragment.instantiate(context,LoveListenCategoriesChildFragment.class.getName(),argument);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle args = getArguments();
ContainCategories categories = args.getParcelable("categories"); // 取得传过来的对象
if(null != categories){
// 下面是开始更新UI
upDateUI(categories);
}
}
public void upDateUI(ContainCategories containCategories){
}
@Override
protected void backPressed() {
super.backPressed();
}
@Override
public void setArguments(Bundle args) {
super.setArguments(args);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_love_book_detail_main,container,false);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}