您的位置:首页 > 数据库

listview设置OnScrollListener分页加载,日夜间模式,判断无网用数据库显示

2017-08-13 21:14 323 查看
public class MainActivity extends AppCompatActivity {
private ListView xlistview;
private Dao dao;
private int index = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置对应的主题 ,在ui创建好之后设置主题无效,所以要放到setContentView()方法前面setTheme()
ThemeUtil.onActivityCreatedSetTheme(this);
setContentView(R.layout.activity_main);
xlistview = (ListView) findViewById(R.id.xlv);
dao = new Dao(this);
read();
boolean b = IntentIf.intentconnection(this);
if (b) {
read();
} else {
List<MenuInfo.DataBean> select = dao.select();
xlistview.setAdapter(new myadapter(select));
}
xlistview.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
int i = view.getLastVisiblePosition();
if (scrollState == SCROLL_STATE_IDLE) {
if (i == view.getCount() - 1) {
if (index > 2) {
index = 0;
} else {
++index;
}
read();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
//切换夜间模式
ImageView im = (ImageView) findViewById(R.id.im);
im.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//切换日夜间模式
ThemeUtil.ChangeCurrentTheme(MainActivity.this);
}
});
}
public void read() {
String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
RequestParams params = new RequestParams(path);
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Gson gson = new Gson();
MenuInfo menuInfo = gson.fromJson(result, MenuInfo.class);
List<MenuInfo.DataBean> list = menuInfo.getData();
for (MenuInfo.DataBean b : list
) {
String title = b.getNews_title();
String url = b.getPic_url();
dao.add(title, url);
}
xlistview.setAdapter(new myadapter(list));
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
class myadapter extends BaseAdapter {
ImageOptions options = new ImageOptions.Builder()
.setLoadingDrawableId(R.mipmap.ic_launcher)
.build();
List<MenuInfo.DataBean> list;
public myadapter(List<MenuInfo.DataBean> list) {
this.list = list;
}
@Override
public int getCount() {
return list != null ? list.size() : 0;
}
@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 viewholder = null;
if (convertView == null) {
convertView = View.inflate(MainActivity.this, R.layout.mylist_item, null);
viewholder = new viewholder();
viewholder.img = (ImageView) convertView.findViewById(R.id.list_img);
viewholder.tvtitle = (TextView) convertView.findViewById(R.id.list_tv);
convertView.setTag(viewholder);
} else {
viewholder = (MainActivity.viewholder) convertView.getTag();
}
viewholder.tvtitle.setText(list.get(position).getNews_title());
x.image().bind(viewholder.img, list.get(position).getPic_url(), options);
return convertView;
}
}
class viewholder {
ImageView img;
TextView tvtitle;
}
}
Application 类
public class Myapp extends Application {
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
}
public static void initImageLoader(Context context) {
File cacheDir = StorageUtils.getOwnCacheDirectory(context, "topnews/Cache");//获取到缓存的目录地址
Log.d("cacheDir", cacheDir.getPath());
//创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数
ImageLoaderConfiguration config = new ImageLoaderConfiguration
.Builder(context)
.threadPoolSize(3)//线程池内加载的数量
.denyCacheImageMultipleSizesInMemory()//.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation你可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024)
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密
.tasksProcessingOrder(QueueProcessingType.LIFO)
.diskCache(new UnlimitedDiskCache(cacheDir))
//自定义缓存路径//.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
.build();
ImageLoader.getInstance().init(config);//全局初始化此配置
}
}
创建数据库类
public class Sqlite extends SQLiteOpenHelper {
public Sqlite(Context context) {
super(context, "zhoukao2.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table zhoukao2(id Integer primary key autoincrement,news_title varchar(50),pic_url varchar(50))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
添加查询类
public class Dao {
private final SQLiteDatabase dao;
public Dao(Context context){
Sqlite sqlite=new Sqlite(context);
dao = sqlite.getWritableDatabase();
}
public boolean add(String title, String pic){
ContentValues values=new ContentValues();
values.put("news_title",title);
values.put("pic_url",pic);
long l = dao.insert("zhoukao2", null, values);
if (l!=-1){
return true;
}
return false;
}
public   List<MenuInfo.DataBean> select(){
List<MenuInfo.DataBean> list =new ArrayList<>();
Cursor cursor = dao.query("zhoukao2", null, null, null, null, null, null);
while (cursor.moveToNext()){
String newstitle = cursor.getString(cursor.getColumnIndex("news_title"));
String picurl = cursor.getString(cursor.getColumnIndex("pic_url"));
MenuInfo.DataBean dataBean=new MenuInfo.DataBean();
dataBean.setNews_title(newstitle);
dataBean.setPic_url(picurl);
list.add(dataBean);
}
return list;
}
}
判断网络类
public class IntentIf {
public static boolean intentconnection(Context context){
//得到管理网络的服务实例
ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到网络信息 (判断网络是否连接、3G、4G)
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
//判断网络是否已经连接,如果连接的话,返回true,否则false
return (networkInfo != null && networkInfo.isConnected());
}
}
日夜模式类
public class ThemeUtil {
//我当前应用的主题
private static int theme = 0;
//日间模式主题
private static final int DAY_THEME = 0;
//夜间模式主题
private static final int NIGHT_THEME = 1;
public static void onActivityCreatedSetTheme(Activity activity) {
switch (theme) {
case DAY_THEME:
activity.setTheme(R.style.AppTheme);
break;
case NIGHT_THEME:
activity.setTheme(R.style.to_night);
break;
}
}
//点击按钮改变对应得主题
public static void ChangeCurrentTheme(Activity activity) {
//1、改变当前主题的theme变量
switch (theme) {
case DAY_THEME:
theme = NIGHT_THEME;
break;
case NIGHT_THEME:
theme = DAY_THEME;
break;
}
//2、重启这个activity
activity.finish();
activity.startActivity(new Intent(activity, activity.getClass()));
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐