网络请求展示数据

public interface GankApi {
    @GET("api/data/Android/{size}/{page}")
    Call<GankData<GankFeed>> list(@Path("size") int size,@Path("page") int page);

  

public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<GankFeed> list;
    private View view;


    public Myadapter(Context context, List<GankFeed> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == 0){
            view = LayoutInflater.from(context).inflate(R.layout.item_first, parent, false);
            myOne myOne = new myOne(view);
            return myOne;
        }else{
            view = LayoutInflater.from(context).inflate(R.layout.item_second, parent, false);
            myTwo myTwo = new myTwo(view);
            return myTwo;
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            if(holder instanceof myOne){
               myOne holder1 = (myOne) holder;
                GankFeed feed = list.get(position);
                holder1.tv.setText(feed.getType());
                holder1.tv2.setText(feed.getPublishedAt());
            }else if(holder instanceof myTwo){
                myTwo two = (myTwo) holder;
                GankFeed gankFeed = list.get(position);
                two.tv.setText(gankFeed.getType());
                two.tv2.setText(gankFeed.getPublishedAt());
                ImageLoader.getInstance().displayImage(gankFeed.getImages().toString(),two.imageView);
            }
    }

    @Override
    public int getItemViewType(int position) {
        GankFeed gankFeed = list.get(position);
        List<String> images = gankFeed.getImages();
        if(images == null){
            return 0;
        }else {
            return 1;
        }

    }


    @Override
    public int getItemCount() {
        return list.size();
    }
    class myOne extends RecyclerView.ViewHolder{
    @BindView(R.id.tv1)
         TextView tv;
    @BindView(R.id.tv2)
         TextView tv2;

        public myOne(View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }
    }
    class myTwo extends RecyclerView.ViewHolder{
        @BindView(R.id.second1)
        TextView tv;
        @BindView(R.id.second2)
         TextView tv2;
        @BindView(R.id.iv)
        ImageView imageView;

        public myTwo(View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);

        }
    }
}

  

public class BaseClass extends AppCompatActivity {


    private Unbinder bind;

    @Override
    public void setContentView(View view) {
        super.setContentView(view);
        bind = ButterKnife.bind(this);
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (bind!= null){
            bind.unbind();
        }

    }
}

  

public class FragmentOne extends Fragment{

    private RecyclerView recyclerView;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, container, false);

        RecyclerView.LayoutManager manager = new LinearLayoutManager(getContext());
        recyclerView = view.findViewById(R.id.rrv);
        //布局加载
        recyclerView.setLayoutManager(manager);
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://gank.io/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        final GankApi gankApi = retrofit.create(GankApi.class);
        Call<GankData<GankFeed>> list = gankApi.list(10, 1);
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(getContext(),"notes-db");
        Database db = helper.getWritableDb();
        final DaoSession daoSession = new DaoMaster(db).newSession();
        list.enqueue(new Callback<GankData<GankFeed>>() {
            @Override
            public void onResponse(Call<GankData<GankFeed>> call, Response<GankData<GankFeed>> response) {
                GankFeedDao gankFeedDao = daoSession.getGankFeedDao();
                for (GankFeed feed:response.body().results) {
                    gankFeedDao.insert(feed);
                }
                List<GankFeed> results = response.body().results;
                Myadapter adapter = new Myadapter(getContext(),results);
                recyclerView.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<GankData<GankFeed>> call, Throwable t) {

            }
        });
        return view;
    }
}

  

public class ImageTypeConverter implements PropertyConverter<List<String>, String> {
    @Override
    public List<String> convertToEntityProperty(String databaseValue) {
        ArrayList<String> list = new ArrayList<>();
        list.add(databaseValue);
        return list;
    }

    @Override
    public String convertToDatabaseValue(List<String> entityProperty) {
        return (entityProperty == null && !entityProperty.isEmpty()) ? "" : entityProperty.get(0);
    }
}

  

public class MainActivity extends BaseClass {


    @BindView(R.id.frg)
    FrameLayout mFrg;
    @BindView(R.id.bt1)
    RadioButton mBt1;
    @BindView(R.id.bt2)
    RadioButton mBt2;
    @BindView(R.id.bt3)
    RadioButton mBt3;
    @BindView(R.id.bt4)
    RadioButton mBt4;
    @BindView(R.id.bt5)
    RadioButton mBt5;
    @BindView(R.id.rg)
    RadioGroup mRg;
    private List<Fragment> fragmentList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        //实例化
        fragmentList = new ArrayList<>();
        //添加fragment
        addFragment();
        //设置默认
        mRg.check(R.id.bt1);
        switchFragmnet(0);

    }

    @OnClick({R.id.bt1, R.id.bt2, R.id.bt3, R.id.bt4, R.id.bt5, R.id.rg, R.id.frg})
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.bt1:
                switchFragmnet(0);
                break;
            case R.id.bt2:
                switchFragmnet(1);
                break;
            case R.id.bt3:
                switchFragmnet(2);
                break;
            case R.id.bt4:
                switchFragmnet(3);
                break;
            case R.id.bt5:
                switchFragmnet(4);
                break;
            case R.id.rg:
                break;
            case R.id.frg:
                break;
        }
    }

    private void addFragment() {
        fragmentList.add(new FragmentOne());
        fragmentList.add(new FragmentTwo());
        fragmentList.add(new FragmentThree());
        fragmentList.add(new FragmentFour());
        fragmentList.add(new FragmentFive());

    }

    private void switchFragmnet(int position) {
        //快开启一个事务
        FragmentTransaction fragmentManager = getSupportFragmentManager().beginTransaction();
        for (int i = 0; i < fragmentList.size(); i++) {
            Fragment fragment = fragmentList.get(i);
            if (i == position) {
                //显示fragment
                if (fragment.isAdded()) {
                    //如果被事务添加,显示
                    fragmentManager.show(fragment);
                } else {
                    //如果这个fragment没有被事务添加过,添加
                    fragmentManager.add(R.id.frg, fragment);
                }

            }else{
                //隐藏fragment
                if (fragment.isAdded()) {
                    //如果这个fragment已经被事务添加,隐藏
                    fragmentManager.hide(fragment);
                }
            }

        }
        fragmentManager.commit();

    }
}

  item_second

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_margin="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/second1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"/>
        <TextView
            android:layout_marginTop="10dp"
            android:id="@+id/second2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2"/>
    </LinearLayout>
<ImageView
    android:id="@+id/iv"
    android:layout_marginRight="10dp"
    android:layout_alignParentRight="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@mipmap/ic_launcher"/>

</RelativeLayout>

  item_first

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
        android:layout_margin="10dp"
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="3"/>
    <TextView
        android:layout_margin="10dp"
        android:id="@+id/tv2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="4"/>

</LinearLayout>

  one

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<android.support.v7.widget.RecyclerView
    android:id="@+id/rrv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>

</LinearLayout>

  

posted @ 2017-12-04 08:12  小马哥(马云)  阅读(209)  评论(0编辑  收藏  举报