0
点赞
收藏
分享

微信扫一扫

Android json范型数据解析类

紫荆峰 2022-03-11 阅读 98
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));//这里就进行解析数据
举报

相关推荐

0 条评论