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>


原创粉丝点击