package com.dimi.app.data;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
/**
* 2022/01/13 16:31.
* <p>
* Gson泛型数组解析
*/
public class GsonListType<T> implements ParameterizedType {
Class<T> mClass;//T可能是代表范型
public GsonListType(Class<T> clazz) {//这个方法传一个范型的类进来
mClass = clazz;
}
@NonNull
@Override
public Type[] getActualTypeArguments() {
return new Type[]{mClass};
}
@NonNull
@Override
public Type getRawType() {
return List.class;
}
@Nullable
@Override
public Type getOwnerType() {
return null;
}
}
使用方法
package com.dimi.app.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.google.gson.Gson;
import com.dimi.app.R;
import com.dimi.app.base.BaseActivity;
import com.dimi.app.base.BaseFragment;
import com.dimi.app.data.DiscoverPhoto;
import com.dimi.app.data.GsonListType;
import com.dimi.app.data.MyPhoto;
import com.dimi.app.ui.adapter.ViewPagerFragmentAdapter;
import com.dimi.app.ui.fragment.PhotoFragment;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
/**
* Created by ZhongXiaolong on 2022/01/30 01:15.
* <p>
* 发现图片预览
*/
public class AlbumPreviewActivity extends BaseActivity {
//发现页点击查看图片
public static void start(Context context, List<DiscoverPhoto> data, int position) {
Intent starter = new Intent(context, AlbumPreviewActivity.class);
starter.putExtra("data", new Gson().toJson(data));//首先是传递范型的数据过来
starter.putExtra("position", position);
context.startActivity(starter);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album_preview);
Intent intent = getIntent();
List<DiscoverPhoto> data = new Gson().fromJson(intent.getStringExtra("data"), new GsonListType<>(DiscoverPhoto.class));//这里就进行解析数据
int position = intent.getIntExtra("position", 0);
List<BaseFragment> fragments = new ArrayList<>();
for (DiscoverPhoto datum : data) {
fragments.add(PhotoFragment.newInstance(datum.getThumb()));
}
ViewPager viewPager = findViewById(R.id.view_pager);
ViewPagerFragmentAdapter adapter = new ViewPagerFragmentAdapter(getSupportFragmentManager(), fragments);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(position);
}
}
starter.putExtra("data", new Gson().toJson(data));//首先是传递范型的数据过来
List<DiscoverPhoto> data = new Gson().fromJson(intent.getStringExtra("data"), new GsonListType<>(DiscoverPhoto.class));//这里就进行解析数据