使用ImageLoader从网上获取图片 及添加数据库,listview展示 Gson解析

package com.example.liqianqianzk;

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

import com.example.liqianqianzk.bean.Data;
import com.example.liqianqianzk.bean.DataBean;
import com.example.liqianqianzk.dao.UserDao;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
/**
 * listview 展示
 * @author 李倩
 * @ date  2017-8-7
 */
public class OtherActivity extends Activity {
UserDao dao;
ListView lv;
List<Data> list;
private DataBean da;
private MyAdapter aadapter;
private DisplayImageOptions options;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_other);
		lv=(ListView) findViewById(R.id.lv);
		dao=new UserDao(this);
		  //第一步:初使化-缺省配置
        ImageLoaderConfiguration config=ImageLoaderConfiguration.createDefault(this);
        ImageLoader.getInstance().init(config);
        //第二步:进行图片缓存及显示图片的配置 使用默认配置
        options = DisplayImageOptions.createSimple();
		new AsyncTask<String, String, String>() {
			@Override
			protected String doInBackground(String... params) {
				// TODO Auto-generated method stub
			String result=getData();
				return result;
			}
			@Override
			protected void onPostExecute(String result) {
				aadapter = new MyAdapter();
				lv.setAdapter(aadapter);
				//删除
				lv.setOnItemClickListener(new OnItemClickListener() {

					@Override
					public void onItemClick(AdapterView<?> parent, View view,
							int position, long id) {
						// TODO Auto-generated method stub
						dao.del(list.get(position).getNews_title());
						list.remove(position);
						aadapter.notifyDataSetChanged();
					}
				});
				super.onPostExecute(result);
			}
		}.execute();

		
	}
	//解析
	protected String getData() {
		String result="";
		try {
			URL url=new URL("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
			HttpURLConnection conn=(HttpURLConnection) url.openConnection();
			int code = conn.getResponseCode();
			if (code==200) {
				Gson gson=new Gson();
				da = gson.fromJson(new InputStreamReader(conn.getInputStream()), DataBean.class);
				list=new ArrayList<Data>();
				list=da.getData();
				//添加数据库
				dao.add(list);
				
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
		// TODO Auto-generated method stub
		
	}
/**
 * 2、	自定义适配器继承BaseAdapter,实现父类的方法(10分)
3、	ListView优化(convertView和静态内部类优化)(10分)
 * @author 李倩
 * @ date  2017-8-7
 */
class MyAdapter extends BaseAdapter{

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

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

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return 0;
	}
//优化
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		final ViewHolder holder;
		if (convertView==null) {
			convertView =View.inflate(OtherActivity.this, R.layout.item, null);
			holder=new ViewHolder();
			holder.tv_news_title=(TextView) convertView.findViewById(R.id.tv_news_title);
			holder.iv_pic_url=(ImageView) convertView.findViewById(R.id.iv_pic_url);
			convertView.setTag(holder);
		}else {
			holder=(ViewHolder) convertView.getTag();
		}
		
		holder.tv_news_title.setText(list.get(position).getNews_title());
		//第三步 图片监听加载
	    ImageLoader.getInstance().loadImage(list.get(position).getPic_url(), options, new ImageLoadingListener() {
			//开始加载
			@Override
			public void onLoadingStarted(String imageUri, View view) {
				// TODO Auto-generated method stub
				
			}
			//加载失败
			@Override
			public void onLoadingFailed(String imageUri, View view,
					FailReason failReason) {
				// TODO Auto-generated method stub
				
			}
			//加载完成
			@Override
			public void onLoadingComplete(String imageUri, View view, Bitmap bitmap) {
				// TODO Auto-generated method stub
				//赋值
				holder.iv_pic_url.setImageBitmap(bitmap);
			}
			//取消加载
			@Override
			public void onLoadingCancelled(String imageUri, View view) {
				// TODO Auto-generated method stub
				
			}
		});
		
		return convertView;
	}
	
}
static class ViewHolder{
	TextView tv_news_title;
	ImageView iv_pic_url;
}
}
 
 
package com.example.liqianqianzk.dao;


import java.util.List;


import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;


import com.example.liqianqianzk.bean.Data;
import com.example.liqianqianzk.util.Myopenholper;
/**
 * dao包
 * @author 李倩
 * @ date  2017-8-7
 */
public class UserDao {
	Myopenholper holper;


	public UserDao(Context context) {
		super();
		holper=new Myopenholper(context);
		// TODO Auto-generated constructor stub
	}
	//  //1、将数据存入数据库(10分)
  public void add(List<Data> list){
	  SQLiteDatabase db = holper.getWritableDatabase();
	  for (int i = 0; i < list.size(); i++) {
		  ContentValues values=new ContentValues();
		  values.put("news_id", list.get(i).getNews_id());
		  values.put("news_summary", list.get(i).getNews_summary());
		  values.put("news_title", list.get(i).getNews_title());
		  values.put("pic_url", list.get(i).getPic_url());
		  db.insert("user", null, values);
		  db.close();
	}
	
	  
  }


 // 2、点击ListView条目删除item,数据库也进行删除(10分)
  public void del(String news_title){
	  SQLiteDatabase db = holper.getWritableDatabase();
	  db.delete("user", "news_title=?", new String[]{news_title});
	  db.close();
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值