1.集成依赖
implementation 'com.android.support:support-v4:28.0.0'
2xml代码
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
3.activity代码
(1)FragmentStateAdapter适配器
public class FragmentStateAdapter extends FragmentStatePagerAdapter {
//存放fragment的集合
private List<Fragment> mFragments;
public FragmentStateAdapter(FragmentManager fm, List<Fragment> mFragments) {
super(fm);
this.mFragments = mFragments;
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
}
}
(2)fragment 代码(只举例一个)
public class ShowFragment extends Fragment implements PracticeRecycleradapter.OnItemClickListener {
private static final int CHECK_COLOR = 1;
private View view;
private TextView tv_title;
private List<SelectItem> mDatas;
private TitleData titleData;
private ShowRecycleradapter recycleAdapter0;
private PracticeRecycleradapter recycleAdapter1;
private int judge;
private RecyclerView recyclerView;
private User user;
public ShowFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
initView();
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_show, container, false);
initView();
return view;
}
private void initView() {
Bundle bundle = getArguments();
titleData = (TitleData) bundle.getSerializable("titleData");
judge = bundle.getInt("ShowRecycleradapter");
try {
mDatas = titleData.getOption();
tv_title = view.findViewById(R.id.tv_title);
tv_title.setMovementMethod(ScrollingMovementMethod.getInstance());
tv_title.setText(titleData.getTitle_num() + "."+titleData.getTitle());
switch (judge){
case 0:
recycleAdapter0 = new ShowRecycleradapter(getActivity(), mDatas);
recyclerView = view.findViewById(R.id.recyc_view);
LinearLayoutManager layoutManager0 = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager0);
recyclerView.setHasFixedSize(true);//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
recyclerView.setAdapter(recycleAdapter0); //创建并设置Adapter
recyclerView.setItemAnimator(new DefaultItemAnimator());
// recycleAdapter0.setOnItemClickListener(this);
break;
case 1:
recycleAdapter1 = new PracticeRecycleradapter(getActivity(), mDatas);
recyclerView = view.findViewById(R.id.recyc_view);
LinearLayoutManager layoutManager1 = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager1);
recyclerView.setHasFixedSize(true);//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
recyclerView.setAdapter(recycleAdapter1); //创建并设置Adapter
recyclerView.setItemAnimator(new DefaultItemAnimator());
recycleAdapter1.setOnItemClickListener(this);
break;
default:break;
}
}catch (NullPointerException e){}
}
@Override
public void onItemClick(View view, int position) {
mDatas.get(position).setCheckState(CHECK_COLOR);
for (SelectItem selectItem:mDatas) {
selectItem.setItemListener(1);
}
switch (judge){
case 0:
recycleAdapter0.notifyDataSetChanged();
break;
case 1:
// recycleAdapter1.notifyDataSetChanged();
recyclerView.setAdapter(recycleAdapter1); //创建并设置Adapter
if(mDatas.get(position).getAnswerState() ==1){
SetIntegral();
user = Myapplication.getUser();
user.increment("integral",1); // 分数递增1
user.update(user.getObjectId(), new UpdateListener() {
@Override
public void done(BmobException e) {
if(e==null){
// Log.i("bmob","更新成功");
}else{
// Log.i("bmob","更新失败:"+e.getMessage()+","+e.getErrorCode());
}
}
});
}
break;
default:break;
}
}
private void SetIntegral() {
AutoDismissDialog show = new AutoDismissDialog(getActivity());
show.showDialog(R.layout.dialog_intergral, 50, -500);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
show.dismiss();
}
}, 1000);
}
@Override
public void onItemLongClick(View view, int position) {
}
}
(3)Mainactivity
import com.example.admin.redbank.Adapter.FragmentStateAdapter;
import com.example.admin.redbank.DataTable.TitleData;
import com.example.admin.redbank.Fragment.ShowFragment;
import com.example.admin.redbank.Myapplication;
import com.example.admin.redbank.R;
import com.example.admin.redbank.Utils.CustomDialog;
import com.example.admin.redbank.Utils.StatusBarUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class PracticeActivity extends FragmentActivity implements View.OnClickListener {
private ViewPager viewpager;
private List<Fragment> fragmentList;
private FragmentStateAdapter adapter;
private int exercise_num;
private List<TitleData>titleDataList,titleDataList2;
private ImageView im_return;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice);
initdata();
}
private void initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
StatusBarUtils.setStatusBarColor(PracticeActivity.this, R.color.colorWhite);
}
}
private void initdata() {
initStatusBar();
im_return = findViewById(R.id.img_return);
im_return.setOnClickListener(this);
titleDataList = new ArrayList<>();
fragmentList = new ArrayList<>();
viewpager = findViewById(R.id.viewpager);
titleDataList = Myapplication.getLocalTitleDataList();
// titleDataList =(List<TitleData>) getIntent().getSerializableExtra("localDta");
try {
exercise_num = titleDataList.size();//题库数量.160
// Toast toast = Toast.makeText(PracticeActivity.this, "下载的题共"+titleDataList.size(), Toast.LENGTH_LONG);
// toast.show();
// }
for (int i = 0; i < exercise_num; i++) {
// for(int j=0; j<titleDataList.get(i).getOption().size();j++){
// titleDataList.get(i).getOption().get(j).setItemListener(0);
// }
ShowFragment fragment = new ShowFragment();
Bundle bundle1 = new Bundle();
titleDataList.get(i).setTitle_num(i+1);
bundle1.putSerializable("titleData", titleDataList.get(i));
bundle1.putInt("ShowRecycleradapter",1);
fragment.setArguments(bundle1);
fragmentList.add(fragment);//布局一样数据不一样的界面
}
}catch (NullPointerException e){}
//初始化adapter
adapter = new FragmentStateAdapter(getSupportFragmentManager(), fragmentList);
//将适配器和ViewPager结合
viewpager.setAdapter(adapter);
// }
}
@Override
public void onClick(View view) {
CustomDialog.Builder builder = new CustomDialog.Builder(PracticeActivity.this,3);
builder.setCancelButton( new android.content.DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setConfirmButton(new android.content.DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
});
builder.create().show();
}
}