Android/Java网络加载框架Retrofit(二)load bitmap into ListView

来源:互联网 发布:网络言情小说作家 编辑:程序博客网 时间:2024/05/21 11:26

Android/Java网络加载框架Retrofit(二)load bitmap into ListView


package zhangphil.http;import android.app.ListActivity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import java.util.ArrayList;import okhttp3.ResponseBody;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.http.GET;import retrofit2.http.Path;public class MainActivity extends ListActivity {    private MyRetrofitService mRetrofitService;    private ArrayList<Call> mCalls = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Retrofit mRetrofit = new Retrofit.Builder()                .baseUrl("https://www.baidu.com/")                .build();        mRetrofitService = mRetrofit.create(MyRetrofitService.class);        ArrayAdapter mArrayAdapter = new ArrayAdapter(this, 0) {            @NonNull            @Override            public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {                ImageView imageView = new ImageView(getContext());                setBitmap("bd_logo1.png", imageView);                return imageView;            }            @Override            public int getCount() {                return 10;            }        };        setListAdapter(mArrayAdapter);    }    private void setBitmap(String picName, final ImageView imageView) {        final Call mCall = mRetrofitService.getImagesByName(picName);        mCall.enqueue(new Callback<ResponseBody>() {            @Override            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {                try {                    Log.d("请求的网络链接", String.valueOf(mCall.request().url()));                    byte[] bytes = response.body().bytes();                    Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);                    imageView.setImageBitmap(bmp);                } catch (Exception e) {                    e.printStackTrace();                }            }            @Override            public void onFailure(Call<ResponseBody> call, Throwable t) {                t.printStackTrace();            }        });        mCalls.add(mCall);    }    private interface MyRetrofitService {        @GET("img/{picName}")        Call<ResponseBody> getImagesByName(@Path("picName") String picName);    }    @Override    protected void onDestroy() {        super.onDestroy();        for (Call call : mCalls) {            call.cancel();        }    }}


阅读全文
0 0
原创粉丝点击