XListView+ViewPager+SQLite
来源:互联网 发布:windows系统制作mac 编辑:程序博客网 时间:2024/05/20 18:15
MainActivity
public class MainActivity extends AppCompatActivity {
XListView xlv;
ViewPager vp;
private List<Max.TopStoriesEntity> list = new ArrayList<Max.TopStoriesEntity>();
private MyAdapter adapter;
int[] img = {R.mipmap.a, R.mipmap.b, R.mipmap.c, R.mipmap.d, R.mipmap.e};
private List<ImageView> vplist;
private SQLiteDao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
vp = (ViewPager) findViewById(R.id.vp);
xlv = (XListView) findViewById(R.id.xlv);
//vplist
vplist = new ArrayList<ImageView>();
//模拟数据
for (int id : img) {
ImageView imageview = new ImageView(this);
imageview.setBackgroundResource(id);
vplist.add(imageview);
}
//创建ViewPager适配器
MyViewPager vpadapter = new MyViewPager();
vp.setAdapter(vpadapter);
//调用方法
inData();
//创建Myadapter适配器
adapter = new MyAdapter();
xlv.setAdapter(adapter);
//实例化SQLiteDao
dao = new SQLiteDao(this);
//设置下拉刷新状态
xlv.setPullRefreshEnable(true);
//设置下拉加载状态
xlv.setPullLoadEnable(true);
//设置下拉刷新的时间
xlv.setRefreshTime("2017.08.12");
//XListView点击
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//删除数据库的数据
dao.delete(list.get(0).getTitle());
//吐司
Toast.makeText(MainActivity.this, "删除" + list.get(0).getTitle(), Toast.LENGTH_SHORT).show();
//刷新Myadapter适配器
adapter.notifyDataSetChanged();
//移除数据
list.remove(0);
// 下拉刷新添加数据时可调用 inData()方法;
// inData();
//停止 刷新
xlv.stopRefresh();
}
@Override
public void onLoadMore() {
//调用方法 上拉加载数据
inData();
//停止加载
xlv.stopLoadMore();
}
});
}
//异步加载
private void inData() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... strings) {
//调用方法
getData();
return null;
}
@Override
protected void onPostExecute(String s) {
//刷新MyAdapter适配器
adapter.notifyDataSetChanged();
super.onPostExecute(s);
}
}.execute();
}
//网络加载数据
private void getData() {
try {
//需联网才能运行
URL url = new URL("https://news-at.zhihu.com/api/4/news/latest");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
int code = conn.getResponseCode();
if (code == 200) {
//Gson解析
Gson gson = new Gson();
Max max = gson.fromJson(new InputStreamReader(conn.getInputStream()), Max.class);
//addAll拼接
list.addAll(max.getTop_stories());
// list =max.getTop_stories();
//添加数据到数据库
dao.insert(list);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//创建vpadapter适配器
public class MyViewPager extends PagerAdapter {
@Override
public int getCount() {
return vplist.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(vplist.get(position));
return vplist.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
//创Myadapter建适配器
public class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
//优化
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null) {
view = View.inflate(MainActivity.this, R.layout.item, null);
holder = new ViewHolder();
holder.it1 = (TextView) view.findViewById(R.id.it1);
holder.it2 = (TextView) view.findViewById(R.id.it2);
holder.it3 = (TextView) view.findViewById(R.id.it3);
holder.iv = (ImageView) view.findViewById(R.id.iv);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// private String image;
// private int type;
// private int id;
// private String ga_prefix;
//private String title;
holder.it1.setText(list.get(i).getTitle());
holder.it2.setText(list.get(i).getGa_prefix());
holder.it3.setText(list.get(i).getId() + "");
//加载图片
ImageLoader.getInstance().displayImage(list.get(i).getImage(), holder.iv);
return view;
}
}
//ViewHolder帮助类
static class ViewHolder {
TextView it1, it2, it3;
ImageView iv;
}
}
SQLiteDao//数据库
public class SQLiteDao {//全局变量
private final MyOpenHlper helper;
//获取上下文
public SQLiteDao(Context context){
//实例化MyOpenHlper
helper = new MyOpenHlper(context); }
//添加数据到数据库的方法
public void insert(List<Max.TopStoriesEntity> list) {
SQLiteDatabase wd = helper.getWritableDatabase();
for (Max.TopStoriesEntity tse : list) {
ContentValues values = new ContentValues();
values.put("id", tse.getId());
values.put("title", tse.getTitle());
values.put("type", tse.getType());
values.put("ga_prefix", tse.getGa_prefix());
wd.insert("rikao", null, values); } }
//删除数据的方法
public void delete(String title){
SQLiteDatabase wd = helper.getWritableDatabase();
wd.delete("rikao","title=?",new String[]{title});
}
}
Layout布局
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="150dp"
></android.support.v4.view.ViewPager>
<Bean.XListView
android:id="@+id/xlv"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_below="@+id/vp"
></Bean.XListView>
</RelativeLayout>
- XListView+ViewPager+SQLite
- XListView+ViewPager
- Viewpager+XListView+Internet
- ViewPager,XListView主Activity
- XListView+ PullToRefreshListView+ViewPager
- Viewpager+Fragment+Xlistview
- viewpager 与 Xlistview
- VIewPager+XListView+RadioButton实现布局
- ViewPager无限轮播加XListview加载
- XListView+ViewPager+上拉下拉
- fragment+Xlistview+viewpager无限轮播+imageloader
- ViewPager给图片加点事件和XListView
- json进行缓存+ViewPager+onRefresh+XlistView
- xlistview+Headview(viewpager自动带点轮播)+缓存
- XListView加头布局ViewPager轮播
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- XListView
- 一个有趣的题目
- cmd命令基础常识
- 一个 Yii + vue 项目(4)AR类简单操作
- PXE自动安装系统原理及配置
- 自动行为操控Steering(七)—避开障碍物(单体操控)
- XListView+ViewPager+SQLite
- elk的使用说明
- 【Android】多Fragment切换以及在主Activity中判断返回按键
- Unity_塔防固定路线_060
- Linux下添加用户
- DPDK-PACKET DISTRIBUTOR LIBRARY 包分发库
- Java反编译插件
- Unity 向量围绕一个轴旋转 求新向量
- 1765:Hanoi问题