//数据库
public class Mysql extends SQLiteOpenHelper {
public Mysql( Context context) {
super(context, "bw.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE jsonlist(id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,url TEXT,thumbnail_pic_s TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//dao包
public class Dao {
private final SQLiteDatabase db;
public Dao(Context context) {
Mysql mysql = new Mysql(context);
db = mysql.getWritableDatabase();
}
//1.插入数据:
public long insert(String table, String nullColumnHack, ContentValues values) {
return db.insert(table, nullColumnHack, values);
}
//4.查询数据:
public Cursor query(String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having,
String orderBy) {
return db.query(table, columns, selection,
selectionArgs, groupBy, having,
orderBy);
}
//数据库添加
for (JsonBean.DataBean bean : data) {
ContentValues values = new ContentValues();
values.put("news_id",bean.getNews_id());
values.put("news_title",bean.getNews_title());
values.put("pic_url",bean.getPic_url());
dao.insert("xinwen", null, values);
}
}
//数据库查询
Toast.makeText(ShowActivity.this, "无网络连接", Toast.LENGTH_LONG).show();
query = dao.query("xinwen", null, null, null, null, null, null);
data=new ArrayList<>();
if (query.moveToFirst()){
do {
/*
private String news_id;
private String news_title;
private String news_summary;
private String pic_url;
*/
String news_id = query.getString(query.getColumnIndex("news_id"));
String news_title = query.getString(query.getColumnIndex("news_title"));
String pic_url = query.getString(query.getColumnIndex("pic_url"));
data.add(new JsonBean.DataBean(news_id,news_title,pic_url));
}while (query.moveToNext());
}
query.close();
adapter_xlv = new MyBaseAdapter_xlv(data, ShowActivity.this);
xlv.setAdapter(adapter_xlv);
//image-loader
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
String path = Environment.getExternalStorageDirectory().getPath() + "/RiKao13";
File file = new File(path);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸
.memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小
.threadPoolSize(3)//配置加载图片的线程数
.threadPriority(1000)//配置线程的优先级
.diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
.diskCacheFileCount(50)//配置sdcard缓存文件的数量
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
.diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
.build();//完成
ImageLoader.getInstance().init(config);
}
}
//多条目
public class ListJsonAdapter extends BaseAdapter {
private Context context;
private List<JsonBeanListview.DataBean> data;
public ListJsonAdapter(Context context, List<JsonBeanListview.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getItemViewType(int position) {
return position % 3;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
switch (getItemViewType(position)) {
case 0:
ViewHolder1 holder1;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_list1, null);
holder1 = new ViewHolder1();
holder1.imageView = convertView.findViewById(R.id.imageView);
holder1.textView = convertView.findViewById(R.id.textView);
convertView.setTag(holder1);
} else {
holder1 = (ViewHolder1) convertView.getTag();
}
JsonBeanListview.DataBean bean = data.get(position);
//================
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true)//让图片进行sdcard缓存
/*.showImageForEmptyUri(R.mipmap.ic_empty)//图片地址有误
.showImageOnFail(R.mipmap.ic_error)//当图片加载出现错误的时候显示的图片
.showImageOnLoading(R.mipmap.loading)//图片正在加载的时候显示的图片*/
.build();
//参数1:加载的图片地址
//参数2:将图片设置到那个图片控件上面
//参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)
ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s(), holder1.imageView, options);
//================
holder1.textView.setText(bean.getTitle());
break;
case 1:
ViewHolder2 holder2;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_list2, null);
holder2 = new ViewHolder2();
holder2.textView = convertView.findViewById(R.id.textView);
convertView.setTag(holder2);
} else {
holder2 = (ViewHolder2) convertView.getTag();
}
JsonBeanListview.DataBean bean2 = data.get(position);
holder2.textView.setText(bean2.getTitle());
break;
case 2:
ViewHolder3 holder3;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_list3, null);
holder3 = new ViewHolder3();
holder3.imageView = convertView.findViewById(R.id.imageView);
convertView.setTag(holder3);
} else {
holder3 = (ViewHolder3) convertView.getTag();
}
JsonBeanListview.DataBean bean3 = data.get(position);
ImageLoader.getInstance().displayImage(bean3.getThumbnail_pic_s(), holder3.imageView);
break;
}
return convertView;
}
class ViewHolder1 {
ImageView imageView;
TextView textView;
}
class ViewHolder2 {
TextView textView;
}
class ViewHolder3 {
ImageView imageView;
}
}
//PulltoreFresh
public class MainActivity extends AppCompatActivity {
private List<JavaBean.DataBean> list;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 第一步:得到控件
final PullToRefreshListView mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
/**第二步:设置刷新方式
* 设置刷新的模式:常用的有三种
* PullToRefreshBase.Mode.BOTH //上下拉刷新都可以
* PullToRefreshBase.Mode.PULL_FROM_START //只允许下拉刷新
* PullToRefreshBase.Mode.PULL_FROM_END //只允许上拉刷新
*
*/
mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
// 第三步:设置是否允许刷新的时候可以滑动()
mPullRefreshListView.setScrollingWhileRefreshingEnabled(true);
//第四步:数据
final String str = "http://www.xieast.com/api/news/news.php?page=1";
HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
//解析
Gson gson = new Gson();
JavaBean bean = gson.fromJson(s, JavaBean.class);
list = bean.getData();
//第五步:设置适配器
adapter = new MyAdapter(MainActivity.this, list);
mPullRefreshListView.setAdapter(adapter);
}
});
//第六步:监听事件
mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//下拉刷新
HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
//解析
Gson gson = new Gson();
JavaBean bean = gson.fromJson(s, JavaBean.class);
list = bean.getData();
//设置适配器
adapter = new MyAdapter(MainActivity.this, list);
mPullRefreshListView.setAdapter(adapter);
mPullRefreshListView.onRefreshComplete();
}
});
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//上拉加载
HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
//解析
Gson gson = new Gson();
JavaBean bean = gson.fromJson(s, JavaBean.class);
List<JavaBean.DataBean> beans = bean.getData();
///把查询到的新数据添加到集合中
list.addAll(beans);
//刷新适配器
adapter.notifyDataSetChanged();
// 当列表被刷新时,调用onRefreshComplete
mPullRefreshListView.onRefreshComplete();
}
});
}
});
}
}
侧拉+数据库+PullToRefresh上下拉刷新
最新推荐文章于 2021-02-18 11:34:46 发布