listview多条目并加载图片

.MainActivity

package com.example.doublelist;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;

import com.example.xxx.me.maxwin.view.XListView;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;

public class MainActivity extends AppCompatActivity {

    private XListView xlv;
    private ArrayList<News.DataBean> list;
    private MAdapter ma;
    private Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xlv = findViewById(R.id.xlv);
        list = new ArrayList<>();
        ma = new MAdapter(MainActivity.this,list);
        xlv.setAdapter(ma);

        new Thread(){
            @Override
            public void run() {
                super.run();
                try {
                    URL url = new URL("http://www.xieast.com/api/news/news.php?page=2");
                    HttpURLConnection httpurlConnection = (HttpURLConnection) url.openConnection();
                    httpurlConnection.setRequestMethod("GET");
                    httpurlConnection.setConnectTimeout(5000);
                    httpurlConnection.setReadTimeout(5000);

                    if (httpurlConnection.getResponseCode()==200){
                       InputStream inputStream = httpurlConnection.getInputStream();
                        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
                        String s = CharStreams.toString(inputStreamReader);

                        Gson gson = new Gson();
                        News news = gson.fromJson(s, News.class);
                        handler.sendMessage(handler.obtainMessage(0,news.getData()));
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }.start();

        handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                list.addAll((Collection<? extends News.DataBean>) msg.obj);
                ma.notifyDataSetChanged();
            }
        };
    }
}

.MAdapter

package com.example.doublelist;

import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;

class MAdapter extends BaseAdapter {

    private MainActivity mainActivity;
    private ArrayList<News.DataBean> list;

    public MAdapter(MainActivity mainActivity, ArrayList<News.DataBean> list) {
        this.mainActivity = mainActivity;
        this.list = list;
    }

    @Override
    public int getItemViewType(int position) {
        if (position%2==0){
            return super.getItemViewType(position);
        }else{
            return 1;
        }

    }

    @Override
    public int getViewTypeCount() {
        return super.getViewTypeCount()+1;
    }


    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh = null;
        if (convertView==null){
            vh = new ViewHolder();
            convertView = View.inflate(mainActivity,getItemViewType(position)==0?R.layout.lv_item1:R.layout.lv_item2,null);

            vh.title = convertView.findViewById(R.id.title);
            vh.date = convertView.findViewById(R.id.date);
            vh.iv = convertView.findViewById(R.id.iv);
            vh.iv1 = convertView.findViewById(R.id.iv1);
            vh.iv2 = convertView.findViewById(R.id.iv2);
            vh.iv3 = convertView.findViewById(R.id.iv3);
            convertView.setTag(vh);
        }else{
            vh = (ViewHolder) convertView.getTag();
        }

        News.DataBean dataBean = list.get(position);
        vh.title.setText(dataBean.getTitle());
        vh.date.setText(dataBean.getDate());

        if (getItemViewType(position)==0){
            ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s(),vh.iv,ImageLoaderconfigs.getops(mainActivity));
        }else{
            ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s(),vh.iv1,ImageLoaderconfigs.getops(mainActivity));
            ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s02(),vh.iv2,ImageLoaderconfigs.getops(mainActivity));
            ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s03(),vh.iv3,ImageLoaderconfigs.getops(mainActivity));
        }

        return convertView;
    }
    class ViewHolder{
        TextView title;
        TextView date;
        ImageView iv,iv1,iv2,iv3;
    }

}

.ImageLoaderconfigs

package com.example.doublelist;

import android.content.Context;
import android.graphics.Bitmap;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;

class ImageLoaderconfigs {

    public static ImageLoaderConfiguration getcon(Context context){
        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context)
                .memoryCacheSizePercentage(10)
                .diskCacheSize(50*1024*1024)
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                .writeDebugLogs()
                .build();
        return configuration;
    }

    public static DisplayImageOptions getops(Context context){
        DisplayImageOptions options=new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .showImageOnLoading(R.mipmap.ic_launcher)
                .showImageOnFail(R.drawable.ic_launcher_background)
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
                .build();
        return options;
    }
}

.App

package com.example.doublelist;

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoader.getInstance().init(ImageLoaderconfigs.getcon(this));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42270281/article/details/83058450
今日推荐