retrofit+Fresco+Recyclerview

本文介绍了一个使用Android RecyclerView展示列表的应用案例,并结合Fresco进行图片加载优化。通过 Retrofit 获取远程数据并展示到列表中,同时实现了数据适配器与布局配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.lenvov.myapplication;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by lenvov on 2018/4/21.
 */

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{

    private List<MyData.DataBean> mData;
    private Context context;

    public MyAdapter(List<MyData.DataBean> mData, Context context) {
        this.mData = mData;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(context).inflate(R.layout.view_rv_item,parent,  false);

        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // 绑定数据
        holder.mTv.setText(mData.get(position).getTitle());

        holder.mImg.setImageURI(mData.get(position).getImage());

    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        TextView mTv;
        SimpleDraweeView mImg;
        public ViewHolder(View itemView) {
            super(itemView);
            mTv = itemView.findViewById(R.id.item_tv);
            mImg = itemView.findViewById(R.id.item_img);
        }
    }
}
package com.example.lenvov.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView = findViewById(R.id.rv);


        Retrofit.Builder builder = new Retrofit.Builder();
        Retrofit retrofit = builder.baseUrl("http://app.vmoiver.com/apiv3/post/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        MyInterface myInterface = retrofit.create(MyInterface.class);

        Call<MyData> call = myInterface.getList();
        call.enqueue(new Callback<MyData>() {
            @Override
            public void onResponse(Call<MyData> call, Response<MyData> response) {
                List<MyData.DataBean> data = response.body().getData();
                myAdapter = new MyAdapter(data,MainActivity.this);
                mRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
                mRecyclerView.setAdapter(myAdapter);

            }

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

            }
        });

    }



}
Fresco.initialize(this);
@GET("getPostInCate?cateid=0&p=1")
Call<MyData> getList();
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.facebook.fresco:animated-base-support:0.12.0'
compile 'com.facebook.fresco:animated-webp:0.12.0'
compile 'com.facebook.fresco:webpsupport:0.12.0'
compile 'com.facebook.fresco:fresco:0.14.1'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值