获取json数据和ImageLoader图片显示到listview

package com.example.weektwodemogss;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

public class MainActivity extends Activity {

    private ListView lv;
    private List<DataBean.proBean> list = new ArrayList<DataBean.proBean>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.listview);
        // 设置初始化
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration
                .createDefault(this);
        ImageLoader.getInstance().init(configuration);

        String url = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
        MyTask task = new MyTask();
        task.execute(url);

        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                //
                Intent intent = new Intent(MainActivity.this,
                        SeconActivity.class);
                DataBean.proBean bean = list.get(position);
                intent.putExtra("img", bean.IMAGEURL);
                intent.putExtra("title", bean.TITLE);
                intent.putExtra("subtitle", bean.SUBTITLE);
                intent.putExtra("time", bean.SHOWTIME);
                intent.putExtra("name", bean.FROMNAME);
                startActivity(intent);

            }
        });
    }

    class MyTask extends AsyncTask<String, Integer, String> {

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub\
            try {
                URL url = new URL(params[0]);
                System.out.println(url + "00000000000");
                HttpURLConnection connection = (HttpURLConnection) url
                        .openConnection();
                int code = connection.getResponseCode();
                if (code == 200) {
                    InputStream inputStream = connection.getInputStream();
                    String str;
                    StringBuilder builder = new StringBuilder();
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(inputStream));
                    while ((str = reader.readLine()) != null) {
                        builder.append(str);
                    }
                    return builder.toString();
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            // 获取请求的数据
            Gson gson = new Gson();
            DataBean bean = gson.fromJson(result, DataBean.class);
            if (bean != null) {
                list = bean.data;
                if (list != null) {
                    // 配置适配器
                    lv.setAdapter(new MyAdapter(list, MainActivity.this));
                }
            }
        }
    }

}


package com.example.weektwodemogss;

import com.nostra13.universalimageloader.core.ImageLoader;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.TextView;

public class SeconActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_secon);
        ImageView img = (ImageView) findViewById(R.id.detail_img);
        TextView name = (TextView) findViewById(R.id.detail_name);
        TextView subtitle = (TextView) findViewById(R.id.detail_subtitle);
        TextView time = (TextView) findViewById(R.id.detail_time);
        TextView title = (TextView) findViewById(R.id.detail_title);
        Intent intent = getIntent();
        // intent.putExtra("img", bean.IMAGEURL);
        // intent.putExtra("title", bean.TITLE);
        // intent.putExtra("subtitle", bean.SUBTITLE);
        // intent.putExtra("time", bean.SHOWTIME);
        // intent.putExtra("name", bean.FROMNAME);

        ImageLoader.getInstance().displayImage(intent.getStringExtra("img"),
                img);
        name.setText(intent.getStringExtra("name"));
        subtitle.setText(intent.getStringExtra("subtitle"));
        time.setText(intent.getStringExtra("time"));
        title.setText(intent.getStringExtra("title"));
    }

}

package com.example.weektwodemogss;

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

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.weektwodemogss.DataBean.proBean;
import com.nostra13.universalimageloader.core.ImageLoader;

public class MyAdapter extends BaseAdapter {

    private List<DataBean.proBean> list = new ArrayList<DataBean.proBean>();
    private ImageLoader loader;
    private Context context;

    public MyAdapter(List<proBean> list, Context context) {
        super();
        this.list = list;
        this.context = context;
        loader = ImageLoader.getInstance();
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder = null;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.item, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        DataBean.proBean bean = list.get(position);
        //设置图片
        loader.displayImage(bean.IMAGEURL, holder.img);
        //设置文本
        holder.name.setText(bean.FROMNAME);
        holder.time.setText(bean.SHOWTIME);
        holder.title.setText(bean.SUBTITLE);
        return convertView;
    }

    class ViewHolder {
        public View view;
        public ImageView img;
        public TextView title, name, time;

        public ViewHolder(View view) {
            super();
            this.view = view;
            this.img = (ImageView) view.findViewById(R.id.item_img);
            this.name = (TextView) view.findViewById(R.id.item_name);
            this.time = (TextView) view.findViewById(R.id.item_time);
            this.title = (TextView) view.findViewById(R.id.item_title);
        }

    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过使用Volley的ImageLoader类来实现在ListView中加载图片。 以下是一个简单的示例: 1. 首先,在build.gradle文件中添加Volley库的依赖: ``` dependencies { implementation 'com.android.volley:volley:1.2.0' } ``` 2. 在ListView的适配器中,使用ImageLoader加载图片: ``` public class MyAdapter extends BaseAdapter { private Context mContext; private List<MyItem> mItems; private ImageLoader mImageLoader; public MyAdapter(Context context, List<MyItem> items) { mContext = context; mItems = items; // 创建ImageLoader对象 mImageLoader = new ImageLoader(Volley.newRequestQueue(mContext), new ImageLoader.ImageCache() { private final LruCache<String, Bitmap> mCache = new LruCache<>(20); @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); } }); } @Override public int getCount() { return mItems.size(); } @Override public MyItem getItem(int position) { return mItems.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.imageView = convertView.findViewById(R.id.image_view); holder.textView = convertView.findViewById(R.id.text_view); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } MyItem item = getItem(position); // 使用ImageLoader加载图片 mImageLoader.get(item.getImageUrl(), new ImageLoader.ImageListener() { @Override public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { Bitmap bitmap = response.getBitmap(); if (bitmap != null) { holder.imageView.setImageBitmap(bitmap); } } @Override public void onErrorResponse(VolleyError error) { Log.e(TAG, "onErrorResponse: " + error.getMessage()); } }); holder.textView.setText(item.getText()); return convertView; } private static class ViewHolder { ImageView imageView; TextView textView; } } ``` 注意,这里的ImageLoader需要传入一个ImageCache对象,用于缓存图片。在上面的示例中,我们使用了一个LruCache来进行缓存。 3. 在MyItem类中添加一个imageUrl字段,用于存储图片的URL。 ``` public class MyItem { private String mText; private String mImageUrl; public MyItem(String text, String imageUrl) { mText = text; mImageUrl = imageUrl; } public String getText() { return mText; } public String getImageUrl() { return mImageUrl; } } ``` 4. 在主界面中,创建一个包含图片URL的MyItem列表,并使用MyAdapter来显示这个列表。 ``` public class MainActivity extends AppCompatActivity { private ListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = findViewById(R.id.list_view); // 创建MyItem列表 List<MyItem> items = new ArrayList<>(); items.add(new MyItem("Item 1", "http://example.com/image1.jpg")); items.add(new MyItem("Item 2", "http://example.com/image2.jpg")); items.add(new MyItem("Item 3", "http://example.com/image3.jpg")); // 创建MyAdapter对象,并设置给ListView MyAdapter adapter = new MyAdapter(this, items); mListView.setAdapter(adapter); } } ``` 这样,就可以在ListView中加载图片了。当用户滑动ListView时,Volley会自动从网络上加载图片,并将它们缓存起来。如果用户再次滑动到已缓存的图片,就可以直接从缓存中读取,而不需要再次下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值