网络请求ImageLoader+SQLite

来源:互联网 发布:黑龙江药品中标数据网 编辑:程序博客网 时间:2024/05/18 02:46

compile'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile'com.google.code.gson:gson:2.8.1'
compile'com.github.bumptech.glide:glide:3.8.0'
package com.lucheng.Adapter;

import android.content.ContentValues;
import android.content.Context;
import android.os.Environment;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.lucheng.Bean.Data;
import com.lucheng.R;
import com.lucheng.Sqlite.SqliteDao;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import static android.R.attr.id;

public class Myadapter extends BaseAdapter {
private final int TYPR1=0;
private final int TYPR2=1;
private List<Data.DataBean.ArticleListBean> mList;
private Context context;

public Myadapter(List<Data.DataBean.ArticleListBean> list,Context context){
mList=list;
this.context=context;
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)

.diskCacheFileCount(100)

.diskCache(new UnlimitedDiskCache(new File(Environment.getExternalStorageDirectory() + "/myApp")))

.build();

ImageLoader.getInstance().init(configuration);
}
@Override
public int getCount() {
return mList.size();
}

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

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

@Override
public int getViewTypeCount() {
return 2;
}

@Override
public int getItemViewType(int position) {
switch (position){
case 0:
return TYPR1;
case 1:
return TYPR2;
default:
return TYPR1;
}
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type=getItemViewType(mList.get(position).getImgSrc()!=null?1:0);
ViewHolder Viewholder;
if(convertView==null){
Viewholder=new ViewHolder();
switch (type){
case TYPR1:
convertView=View.inflate(context,R.layout.item1,null);
break;
case TYPR2:
convertView=View.inflate(context,R.layout.item2,null);
Viewholder.image= (ImageView) convertView.findViewById(R.id.image);
break;
}
Viewholder.text1= (TextView) convertView.findViewById(R.id.title);
Viewholder.text2= (TextView) convertView.findViewById(R.id.title2);
Viewholder.text3= (TextView) convertView.findViewById(R.id.title3);
convertView.setTag(Viewholder);
}else{
Viewholder= (ViewHolder) convertView.getTag();
}
Data.DataBean.ArticleListBean bean = mList.get(position);
Viewholder.text1.setText(bean.getTitle());
Viewholder.text2.setText(bean.getSite());
Date date=new Date(bean.getRecommend_time());
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
String format = sdf.format(date);
Viewholder.text3.setText("阅读 "+bean.getReaded()+" 赞 0"+" "+format);
switch (type){
case TYPR2:
ImageLoader.getInstance().displayImage(bean.getImgSrc(),Viewholder.image);
break;
}
return convertView;
}
class ViewHolder{
ImageView image;
TextView text1,text2,text3;
}
}

---------------------------
package com.lucheng.Bean;

public class SqliteData {
private String title;
private String title1;
private String title2;

@Override
public String toString() {
return "SqliteData{" +
"title='" + title + '\'' +
", title1='" + title1 + '\'' +
", title2='" + title2 + '\'' +
'}';
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getTitle1() {
return title1;
}

public void setTitle1(String title1) {
this.title1 = title1;
}

public String getTitle2() {
return title2;
}

public void setTitle2(String title2) {
this.title2 = title2;
}
}
----------------
图片bean和xlistview bean包
--------------
package com.lucheng.Sqlite;

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

import static android.R.attr.version;

public class SqliteUtils extends SQLiteOpenHelper {
public SqliteUtils(Context context) {
super(context, "user.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
String sql="create table user(id integer primary key autoincrement,title varchar(100),title1 varchar(100),title2 varchar(100))";
db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}
-----------------
package com.lucheng.Sqlite;

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

import com.lucheng.Bean.SqliteData;

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

public class SqliteDao {

private final SQLiteDatabase wd;

public SqliteDao(Context context){
SqliteUtils sqliteUtils = new SqliteUtils(context);
wd = sqliteUtils.getWritableDatabase();
}
public void insert(ContentValues values){
wd.insert("user",null,values);
}
public List<SqliteData> select(){
List<SqliteData> list=new ArrayList<>();
Cursor cursor = wd.rawQuery("select * from user", null);

while (cursor.moveToNext()){
String title = cursor.getString(cursor.getColumnIndex("title"));
String title1 = cursor.getString(cursor.getColumnIndex("title1"));
String title2 = cursor.getString(cursor.getColumnIndex("title2"));
SqliteData sd=new SqliteData();
sd.setTitle(title);
sd.setTitle1(title1);
sd.setTitle2(title2);
list.add(sd);
}
return list;
}
}
---------------
package com.lucheng;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
/**
* 类描述:展示图片
* 创建人:
* 创建时间:
*/
public class ImageActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
Intent intent = getIntent();
String url = intent.getStringExtra("url");
ImageView image= (ImageView) findViewById(R.id.imageview);
Glide.with(this).load(url).into(image);
}
}
--------
package com.lucheng;

import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bway.lucheng1504d20170602.Adapter.Myadapter;
import com.bway.lucheng1504d20170602.Bean.Data;
import com.bway.lucheng1504d20170602.Bean.ImageData;
import com.bway.lucheng1504d20170602.Bean.SqliteData;
import com.bway.lucheng1504d20170602.HttpUrlConnect.HttpUrl;
import com.bway.lucheng1504d20170602.Sqlite.SqliteDao;
import com.google.gson.Gson;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import me.maxwin.view.XListView;

import static android.R.attr.data;
import static android.R.attr.switchMinWidth;

/**
* 类描述:主界面 实现listview和viewpager
* 创建人:
* 创建时间:
*/
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{

private ViewPager mViewpager;
private XListView mXlistView;
private int page=1;
private String pathUrl="http://zkread.com/htnewsroom/articles/tops";
private String path="http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?" +
"itemType=recommendation&itemName=%25E6%258E%25A8%25E8%258D%2590&itemId=-1&page="+page+"&size=20&firstId=1338557";
private List<ImageData.DataBean> list;
private List<Data.DataBean.ArticleListBean> mList;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what==1) {
Gson gson = new Gson();
ImageData imageData = gson.fromJson(msg.obj.toString(), ImageData.class);
List<ImageData.DataBean> data = imageData.getData();
list.addAll(data);
imageAdapter.notifyDataSetChanged();
}
if(msg.what==2){
Gson gson = new Gson();
Data data = gson.fromJson(msg.obj.toString(), Data.class);
List<Data.DataBean.ArticleListBean> articleList = data.getData().getArticleList();
mList.addAll(articleList);
for (Data.DataBean.ArticleListBean ss:articleList){
ContentValues values=new ContentValues();
values.put("title",ss.getTitle());
values.put("title1",ss.getSite());
Date date=new Date(ss.getRecommend_time());
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm");
String format = sdf.format(date);
values.put("title2","阅读 "+ss.getReaded()+" 赞 0"+" "+format);
sqliteDao.insert(values);
}

myadapter.notifyDataSetChanged();
}
}
};
private ImageAdapter imageAdapter;
private Myadapter myadapter;
private SqliteDao sqliteDao;
private TextView mTextView;
private TextView mTextView1;
private TextView mTextView2;
private TextView mTextView3;
private RadioButton rb1;
private RadioButton rb2;
private RadioButton rb3;
private RadioButton rb4;
private RadioButton rb5;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(isNetworkAvailable(this)){
initView();
initData();
loadData();
}else{
sqliteDao = new SqliteDao(this);
List<SqliteData> select = sqliteDao.select();
ArrayAdapter<SqliteData> adapter = new ArrayAdapter<>(this, R.layout.item1,R.id.title,select);
mXlistView = (XListView) findViewById(R.id.xlistview);
mXlistView.setAdapter(adapter);
}
OnClicks();
}

private void OnClicks() {
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTextView.setTextColor(getResources().getColor(R.color.colorPrimary));
mTextView1.setTextColor(getResources().getColor(R.color.black));
mTextView2.setTextColor(getResources().getColor(R.color.black));
mTextView3.setTextColor(getResources().getColor(R.color.black));
path="http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?" +
"itemType=recommendation&itemName=推荐&itemId=-1&page="+page+"&size=20&firstId=1338557";
loadData();
}
}
);
mTextView1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mTextView1.setTextColor(getResources().getColor(R.color.colorPrimary));
mTextView.setTextColor(getResources().getColor(R.color.black));
mTextView2.setTextColor(getResources().getColor(R.color.black));
mTextView3.setTextColor(getResources().getColor(R.color.black));
path="http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?" +
"itemType=recommendation&itemName=电子商务&itemId=-1&page="+page+"&size=20&firstId=1338557";
loadData();

}
});
mTextView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTextView2.setTextColor(getResources().getColor(R.color.colorPrimary));
mTextView1.setTextColor(getResources().getColor(R.color.black));
mTextView.setTextColor(getResources().getColor(R.color.black));
mTextView3.setTextColor(getResources().getColor(R.color.black));
path="http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?" +
"itemType=recommendation&itemName=互联网金融&itemId=-1&page="+page+"&size=20&firstId=1338557";
loadData();

}
});
mTextView3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTextView3.setTextColor(getResources().getColor(R.color.colorPrimary));
mTextView.setTextColor(getResources().getColor(R.color.black));
mTextView2.setTextColor(getResources().getColor(R.color.black));
mTextView1.setTextColor(getResources().getColor(R.color.black));
path="http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?" +
"itemType=recommendation&itemName=物联网&itemId=-1&page="+page+"&size=20&firstId=1338557";
loadData();

}
});
}

private void loadData() {
new Thread(){
@Override
public void run() {
String connect = HttpUrl.getUrlConnect(path);
Message message = Message.obtain();
message.obj=connect;
message.what=2;
handler.sendMessage(message);
}
}.start();
}

private void initView() {
sqliteDao = new SqliteDao(this);
mTextView = (TextView) findViewById(R.id.tuijian);
mTextView1 = (TextView) findViewById(R.id.dianzishangwu);
mTextView2 = (TextView) findViewById(R.id.hulianwang);
mTextView3 = (TextView) findViewById(R.id.wulianwang);
mViewpager = (ViewPager) findViewById(R.id.viewpager);
mXlistView = (XListView) findViewById(R.id.xlistview);
mXlistView.setPullLoadEnable(true);
mXlistView.setXListViewListener(this);
mList=new ArrayList<>();
imageAdapter = new ImageAdapter();
myadapter = new Myadapter(mList, this);
list=new ArrayList<>();
mXlistView.setAdapter(myadapter);
mViewpager.setAdapter(imageAdapter);
mXlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent=new Intent(MainActivity.this,ImageActivity.class);
intent.putExtra("url",mList.get(position).getImgSrc());
startActivity(intent);
}
});
rb1 = (RadioButton) findViewById(R.id.rad1);
rb2 = (RadioButton) findViewById(R.id.rad2);
rb3 = (RadioButton) findViewById(R.id.rad3);
rb4 = (RadioButton) findViewById(R.id.rad4);
rb5 = (RadioButton) findViewById(R.id.rad5);

mViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
switch (position){
case 0:
rb1.setChecked(true);
break;
case 1:
rb2.setChecked(true);
break;
case 2:
rb3.setChecked(true);
break;
case 3:
rb4.setChecked(true);
break;
case 4:
rb5.setChecked(true);
break;
}
}

@Override
public void onPageScrollStateChanged(int state) {

}
});
}
private void initData() {
new Thread(){
@Override
public void run() {
String connect = HttpUrl.getUrlConnect(pathUrl);
Message message = Message.obtain();
message.obj=connect;
message.what=1;
handler.sendMessage(message);
}
}.start();

}
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null && info.isConnected())
{
// 当前网络是连接的
if (info.getState() == NetworkInfo.State.CONNECTED)
{
// 当前所连接的网络可用
return true;
}
}
}
return false;
}

@Override
public void onRefresh() {
page=1;
loadData();
stop();
}

@Override
public void onLoadMore() {
loadData();
stop();
}

private void stop() {
mXlistView.stopRefresh();
mXlistView.stopLoadMore();
page++;
}

class ImageAdapter extends PagerAdapter{

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

@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(MainActivity.this);
Glide.with(MainActivity.this)
.load(list.get(position).getImgSrc())
.placeholder(R.mipmap.ic_launcher)
.into(imageView);
container.addView(imageView);
return imageView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
}
------------
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-----------------
<?xml version="1.0" encoding="UTF-8"?>

-<LinearLayout tools:context="com.lucheng.MainActivity" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/activity_main" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">


-<LinearLayout android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="match_parent">

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:id="@+id/tuijian" android:layout_weight="1" android:textColor="#0c4f9c" android:gravity="center" android:textSize="19dp" android:text="推荐"/>

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:id="@+id/dianzishangwu" android:layout_weight="1" android:gravity="center" android:textSize="19dp" android:text="电子商务"/>

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:id="@+id/hulianwang" android:layout_weight="1" android:gravity="center" android:textSize="19dp" android:text="互联网金融"/>

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:id="@+id/wulianwang" android:layout_weight="1" android:gravity="center" android:textSize="19dp" android:text="物联网"/>

</LinearLayout>


-<RelativeLayout android:layout_height="200dp" android:layout_width="match_parent">

<android.support.v4.view.ViewPager android:layout_height="200dp" android:layout_width="match_parent" android:id="@+id/viewpager"> </android.support.v4.view.ViewPager>


-<RadioGroup android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="match_parent" android:gravity="center" android:layout_alignParentBottom="true">

<RadioButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/rad1" android:checked="true"/>

<RadioButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/rad2"/>

<RadioButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/rad3"/>

<RadioButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/rad4"/>

<RadioButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/rad5"/>

</RadioGroup>

</RelativeLayout>


-<RelativeLayout android:layout_height="wrap_content" android:layout_width="match_parent">

<me.maxwin.view.XListView android:layout_height="250dp" android:layout_width="wrap_content" android:id="@+id/xlistview"/>


-<LinearLayout android:orientation="horizontal" android:layout_height="22dp" android:layout_width="match_parent" android:layout_alignParentBottom="true" android:background="#fff">

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:textSize="20dp" android:text="技术"/>

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:textColor="#0c14ab" android:gravity="center" android:textSize="20dp" android:text="咨讯"/>

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:textSize="20dp" android:text="学园"/>

<TextView android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:textSize="20dp" android:text="我的"/>

</LinearLayout>

</RelativeLayout>

</LinearLayout>
------------
<?xml version="1.0" encoding="UTF-8"?>

-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android">

<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:textSize="20dp" android:id="@+id/title"/>

<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/title2"/>

<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/title3"/>

</LinearLayout>
-----------
<?xml version="1.0" encoding="UTF-8"?>

-<LinearLayout android:orientation="horizontal" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android">


-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="wrap_content">

<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:textSize="20dp" android:id="@+id/title"/>

<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/title2"/>

<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/title3"/>

</LinearLayout>

<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/image"/>

</LinearLayout>
----------
<?xml version="1.0" encoding="UTF-8"?>

-<RelativeLayout tools:context="com.bway.lucheng1504d20170602.ImageActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/activity_image" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageview" android:layout_centerInParent="true" android:src="@mipmap/ic_launcher"/>

</RelativeLayout>

阅读全文
1 0