listview分页加载

主界面:

public class MainActivity extends AppCompatActivity {
    private ListView mylistview;
    private int index=1;
    private SQLiteDatabase db;
    private ArrayList<Sqlitebean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyTheme.settheme(this);
        setContentView(R.layout.activity_main);
        mylistview = (ListView) findViewById(R.id.mylistview);
        ImageView changet = (ImageView) findViewById(R.id.changet);
        changet.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyTheme.changetheme(MainActivity.this);
            }
        });
        MySqliteclass sqliteclass = new MySqliteclass(this);
        db = sqliteclass.getWritableDatabase();
        boolean b = IntentIf.intentconnection(this);
        if (b){
        addintentdata();
        }else{
            list = new ArrayList<>();
            Cursor cursor = db.query("locallist", null, null, null, null, null, null);
            while(cursor.moveToNext()){
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String photourl = cursor.getString(cursor.getColumnIndex("photourl"));
                Sqlitebean sqlitebean = new Sqlitebean(name, photourl);
                list.add(sqlitebean);
            }
            mylistview.setAdapter(new Myadapter(list));
        }
        mylistview.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                int last = view.getLastVisiblePosition();
                if (scrollState==SCROLL_STATE_IDLE){
                    if (last==view.getCount()-1){
                        if (index>2){
                            index=1;
                        }else{
                        ++index;
                        }
                        addintentdata();
                    }
                }
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            }
        });
    }

    private void addintentdata() {
        new AsyncTask<String,Void,String>(){
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if (s==null){
                    return;
                }
                Gson gson = new Gson();
                MyGsonData myGsonData = gson.fromJson(s, MyGsonData.class);
                List<MyGsonData.DataBean> data = myGsonData.getData();
                ContentValues values=new ContentValues();
                ArrayList<Sqlitebean> arr = new ArrayList<>();
                for (MyGsonData.DataBean bean :data) {
                    String news_title = bean.getNews_title();
                    String pic_url = bean.getPic_url();
                    Sqlitebean sqlitebean = new Sqlitebean(news_title, pic_url);
                    arr.add(sqlitebean);
                    values.put("name",news_title);
                    values.put("photourl",pic_url);
                    db.insert("locallist",null,values);
                }
                mylistview.setAdapter(new Myadapter(arr));
            }

            @Override
            protected String doInBackground(String... params) {
                try {
                    String s=params[0];
                    URL url=new URL(s);
                    HttpURLConnection http= (HttpURLConnection) url.openConnection();
                    http.setRequestMethod("GET");
                    http.setConnectTimeout(5000);
                    http.setReadTimeout(5000);
                    int code = http.getResponseCode();
                    if (code==200){
                        InputStream inputStream = http.getInputStream();
                        ByteArrayOutputStream bo=new ByteArrayOutputStream();
                        int len=0;
                        byte[] bytes=new byte[1024];
                        while ((len=inputStream.read(bytes))!=-1){
                            bo.write(bytes,0,len);
                        }
                        inputStream.close();
                        bo.close();
                        return bo.toString();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute("http://api.expoon.com/AppNews/getNewsList/type/+"+index+"+/p/");
    }

    private class Myadapter extends BaseAdapter {
        private List<Sqlitebean> list;
        DisplayImageOptions options=new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.ic_launcher)
                .build();
        public Myadapter(List<Sqlitebean> 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).getName());
            ImageLoader.getInstance().displayImage(list.get(position).getUrl(),viewholder.img,options);
            return convertView;
        }
    }
    class viewholder{
        ImageView img;
        TextView tvtitle;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值