多条目加载+XlistView刷新加载更多
2017-08-24 14:22
218 查看
《1、》MainActivity代码
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private Handler handler=new Handler(){ private MyAdapter adapter; @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: adapter = new MyAdapter(); xlv.setAdapter(adapter); break; case 1: adapter.notifyDataSetChanged(); xlv.stopRefresh(); break; case 2: adapter.notifyDataSetChanged(); xlv.stopLoadMore(); break; } } }; // private List<Bean.DataBean> data; private List<XinBean.DataBean> data1; private DisplayImageOptions options; private XListView xlv; private int pager=7; private int pagers=1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xlv = (XListView) findViewById(R.id.xlv); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .cacheInMemory(true) .cacheOnDisk(true) .build(); xlv.setXListViewListener(this); xlv.setPullLoadEnable(true); xlv.setPullRefreshEnable(true); xlv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Intent intent = new Intent(MainActivity.this, WebActivity.class); // String article_url = data.get(position).getArticle_url(); // intent.putExtra("url",article_url); // startActivity(intent); } }); new Thread(){ @Override public void run() { super.run(); // String path="http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=1"; String path="http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1457659690&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457672153&loc_mode=5&lac=4527&cid=28883&iid=3839760160&device_id=12246291682&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=19&os_version=4.4.4&uuid=352284045861006&openudid=84c1c7b192991cc6"; Gson gson = new Gson(); String json = NetWork.getJson(path); XinBean xinBean = gson.fromJson(json, XinBean.class); //data = bean.getData(); data1 = xinBean.getData(); handler.sendEmptyMessage(0); } }.start(); } @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { new Thread(){ @Override public void run() { super.run(); pager++; //String path="http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api="+pager; String path="http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1457659690&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457672153&loc_mode=5&lac=4527&cid=28883&iid=3839760160&device_id=12246291682&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=19&os_version=4.4.4&uuid=352284045861006&openudid=84c1c7b192991cc"+pager; String json = NetWork.getJson(path); e6a3 Gson gson = new Gson(); XinBean xinBean = gson.fromJson(json, XinBean.class); List<XinBean.DataBean> data2 = xinBean.getData(); data1.addAll(0,data2); handler.sendEmptyMessage(1); } }.start(); } },2000); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { new Thread(){ @Override public void run() { super.run(); pagers++; //String path="http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api="+pagers; String path="http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1457659690&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457672153&loc_mode=5&lac=4527&cid=28883&iid=3839760160&device_id=12246291682&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=19&os_version=4.4.4&uuid=352284045861006&openudid=84c1c7b192991cc"+pagers; String json = NetWork.getJson(path); Gson gson = new Gson(); XinBean xinBean = gson.fromJson(json, XinBean.class); List<XinBean.DataBean> data3 = xinBean.getData(); data1.addAll(data3); handler.sendEmptyMessage(2); } }.start(); } },2000); } /** * 多条目加载的适配器 */ class MyAdapter extends BaseAdapter{ //有图片 private static final int TYPE_1=0; //无图片 private static final int TYPE_2=1; @Override public int getItemViewType(int position) { boolean has_image = data1.get(position).isHas_image(); if (has_image){ return TYPE_1; }else { return TYPE_2; } } @Override public int getViewTypeCount() { return 2; } @Override public int getCount() { return data1.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; ViewHolder2 holder2; int type = getItemViewType(position); switch (type){ case 0: if (convertView==null){ holder2 = new ViewHolder2(); convertView=View.inflate(MainActivity.this,R.layout.xlist_item2,null); holder2.tv_title2= (TextView) convertView.findViewById(R.id.tv_title2); holder2.iv1_item2= (ImageView) convertView.findViewById(R.id.iv1_item2); holder2.iv2_item2= (ImageView) convertView.findViewById(R.id.iv2_item2); holder2.iv3_item2= (ImageView) convertView.findViewById(R.id.iv3_item2); holder2.tv_source2= (TextView) convertView.findViewById(R.id.tv_source2); convertView.setTag(holder2); }else{ holder2= (ViewHolder2) convertView.getTag(); } holder2.tv_title2.setText(data1.get(position).getTitle()); holder2.tv_title2.setText(data1.get(position).getSource()); List<XinBean.DataBean.Images> image_list = data1.get(position).getImage_list(); ImageLoader.getInstance().displayImage(+.get(0).getUrl(), holder2.iv1_item2); ImageLoader.getInstance().displayImage(image_list.get(1).getUrl(), holder2.iv2_item2); ImageLoader.getInstance().displayImage(image_list.get(2).getUrl(), holder2.iv3_item2); break; case 1: if (convertView==null){ holder = new ViewHolder(); convertView=View.inflate(MainActivity.this,R.layout.xlist_item1,null); holder.tv_source1= (TextView) convertView.findViewById(R.id.tv_source1); holder.tv_title1= (TextView) convertView.findViewById(R.id.tv_title1); holder.iv_item1= (ImageView) convertView.findViewById(R.id.iv_item1); convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag(); } holder.tv_title1.setText(data1.get(position).getTitle()); holder.tv_source1.setText(data1.get(position).getSource()); break; } return convertView; } class ViewHolder{ TextView tv_title1; TextView tv_source1; ImageView iv_item1; } class ViewHolder2{ TextView tv_title2; ImageView iv1_item2; ImageView iv2_item2; ImageView iv3_item2; TextView tv_source2; } } }
《2》网络请求
public class NetWork {public static String getJson(String path){try {URL url = new URL(path);HttpURLConnection connection= (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(3000);int responseCode = connection.getResponseCode();ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();if (responseCode==200){InputStream inputStream = connection.getInputStream();byte[] buffer=new byte[1024];int read = 0;while((read = inputStream.read(buffer))!=-1){byteArrayOutputStream.write(buffer,0,read);}return byteArrayOutputStream.toString();}} catch (Exception e) {e.printStackTrace();}return null;}}《3、》数据库
public class SQLDataBaseOpenHelper extends SQLiteOpenHelper {public SQLDataBaseOpenHelper(Context context) {super(context, "users", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table news (id integer primary key autoincrement,item_id int(20),title varchar(20),source varchar(20),article_url varchar(40))");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}《4》数据库添加操作
public class Dao {private final SQLiteDatabase database;public Dao(Context context){SQLDataBaseOpenHelper baseOpenHelper = new SQLDataBaseOpenHelper(context);database = baseOpenHelper.getReadableDatabase();}public boolean add(int item_id,String title,String source,String article_url ){ContentValues values = new ContentValues();values.put("item_id",item_id);values.put("title",title);values.put("source",source);values.put("article_url",article_url);long i = database.insert("news", null, values);if (i!=-1){return true;}else {return false;}}}
相关文章推荐
- Android开发之ListView列表刷新和加载更多实现方法
- xlistview刷新加载+Drawlayout+多条目
- Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表
- ListView 上拉刷新 下拉加载更多(参考imooc)
- 超简单的 listview的第三方控件PullToRefreshListView 上拉刷新,下拉加载更多,分页加载
- 上拉刷新 下拉加载更多-PullToRefreshListView的简介
- 自定义上拉加载更多的ListView配合SwipeRefreshLayout实现列表刷新加载
- pulltoRefreshSwipeMenuListview-带侧滑的可下拉刷新、上拉加载更多的控件
- 自定义ListView上拉刷新,下拉加载更多(一)
- PullToRefresh实现ListView的刷新,加载更多的展示
- 滚动到底部加载更多及下拉刷新listview的使用
- Android界面实现 整合了刷新、加载更多、滑动删除功能的XListview
- ListView加普通的头、刷新、加载更多
- Android自定义View之快速实现下拉刷新, 点击加载更多ListView
- 下拉刷新+加载更多的ListView(直接拿来用)
- listview加载刷新加载更多的逻辑
- 解决ScrollView 嵌套ListView不能刷新,加载更多问题
- 【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview
- 侧滑菜单+XListView+ImageLoader+Post请求方式+ListView加载更多条目
- listView控件刷新、加载更多