listview获取网络数据

判断网络开关

    public static  boolean isNetworkConnected(Context context){
    if(context!=null){
        //获取连接管理器
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        //获取网络状态
        NetworkInfo info = manager.getActiveNetworkInfo();
        //判断网络是否可用
       if(info!=null){
           return  info.isAvailable();
       }
    }
    return false;
}

get获取网络数据

public static String requseHttpGet(String strUrl){
    try {
        //获取Url
        URL url = new URL(strUrl);
        //获取HttpURLConnection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //get请求
        connection.setRequestMethod("GET");
        //获取数据
        InputStream stream = connection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
        //拼接字符串
        StringBuilder builder = new StringBuilder();
        String str="";
        //循环读字符串
        while ((str=reader.readLine())!=null){
            builder.append(str);
        }
        //返回拼接后的数据
        return builder.toString();
    }catch (Exception e){
        e.printStackTrace();
    }
    return null;
}

get获取网络图片

 public static Bitmap httpGETImage(String string) {
    try {
        //获取Url
        URL url = new URL(string);
        //获取HttpURLConnection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //get请求
        connection.setRequestMethod("GET");
        //获取数据
        InputStream stream = connection.getInputStream();
        //图片
        Bitmap bitmap = BitmapFactory.decodeStream(stream);
        return bitmap;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

AsyncTask请求数据

public interface  CallBackString{
    void  getData(String s);
}

public  static  void  httpAsyncTask(String strUrl, final CallBackString backString){
    new AsyncTask<String,Integer,String>(){
         @Override
        protected String doInBackground(String... strings) {
            return httpGet(strings[0]);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //接口回调
            backString.getData(s);
        }
    }.execute(strUrl);
}

Xlistview

  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fraglistview,container,false);
    //id
    xListView = view.findViewById(R.id.xlistview);
    //启用上拉加载
    xListView.setPullLoadEnable(true);
    //注册接口
    xListView.setXListViewListener(new XListView.IXListViewListener() {
        @Override
        public void onRefresh() {//下拉加载
            //解析
            Gson gson = new Gson();
            JsonBean bean= gson.fromJson(s,JsonBean.class);
            list = bean.getData();
            //适配器
            adapter = new MyAdapter(list,getActivity());
            xListView.setAdapter(adapter);
            onLoad();
        }

        @Override
        public void onLoadMore() {//上拉刷新
            //解析
            Gson gson = new Gson();
            JsonBean bean= gson.fromJson(s,JsonBean.class);
            List<JsonBean.DataBean> data = bean.getData();
            //数据放入集合
            list.addAll(data);
            //刷新适配器
            adapter.notifyDataSetChanged();
            onLoad();
        }
    });

开启线程

    new Thread(){
        @Override
        public void run() {
            super.run();
            //耗时操作
            boolean networkConnected = Http.isNetworkConnected(getActivity());
            //判断是否有网
            if (networkConnected) {
                //请求数据
                String s = Http.requseHttpGet("网址");
                //解析
                Gson gson = new Gson();
                JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
                List<JsonBean.ResultBean> list = jsonBean.getResult();
                //更新ui
                Message message = new Message();
                message.what = 0;
                message.obj = list;
                handler.sendMessage(message);
            }else {
                handler.sendEmptyMessageDelayed(1,0);
            }
        }
    }.start();

onLoad

    private  void onLoad(){
    //停止加载更多,重置头视图
    xListView.stopRefresh();
    //停止加载更多,重置脚视图
    xListView.stopLoadMore();
    //刷新时间
    xListView.setRefreshTime("刚刚");
}

handler接收

 Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case 0:
                List<JsonBean.ResultBean> list = (List<JsonBean.ResultBean>) msg.obj;
                //适配器
                listView.setAdapter(new MyAdapter(list,getActivity()));
                break;
            case 1:
                Toast.makeText(getActivity(),"没网",Toast.LENGTH_LONG).show();
                break;
        }
    }
};

gridview

String str=“网址”;

    HttpUtils.httpAsyncTask(str,new HttpUtils.CallBackString() {
        @Override
        public void getData(String s) {
            //解析
            Gson gson = new Gson();
            JsonBean bean= gson.fromJson(s,JsonBean.class);
            List<JsonBean.DataBean> list = bean.getData();
            //适配器
            grid.setAdapter(new MyAdapter(list,getActivity()));
        }
    });

image-loader

public class App extends Application {
@Override
public void onCreate() {
    super.onCreate();
    //缓存路径
    String path = Environment.getExternalStorageDirectory().getPath() + "/RiKao13";
    File file = new File(path);

           ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
            .memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸
            .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小
            .threadPoolSize(3)//配置加载图片的线程数
            .threadPriority(1000)//配置线程的优先级
            .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
            .diskCacheFileCount(50)//配置sdcard缓存文件的数量
            .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
            .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
            .build();//完成

    ImageLoader.getInstance().init(config);
   
}
}

多条目加载

public class MyAdapter extends BaseAdapter {
private List<JsonBean.DataBean> list;
private Context context;

public MyAdapter(List<JsonBean.DataBean> list, Context context) {
    this.list = list;
    this.context = context;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

//视图个数
@Override
public int getViewTypeCount() {
    return 2;
}

//视图类型
@Override
public int getItemViewType(int position) {
    return position % 2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    switch (getItemViewType(position)) {
        case 0:
            ViewHolder holder;
            if (convertView == null) {
                convertView = View.inflate(context, R.layout.text, null);
                holder = new ViewHolder();
                holder.img = convertView.findViewById(R.id.img);
                holder.txt = convertView.findViewById(R.id.txt);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            JsonBean.DataBean bean = list.get(position);
            holder.txt.setText(bean.getTitle());
            ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s(), holder.img);
            break;
        case 1:
            ViewHolder1 holder1;
            if (convertView == null) {
                convertView = View.inflate(context, R.layout.text2, null);
                holder1 = new ViewHolder1();
                holder1.image = convertView.findViewById(R.id.image);
                holder1.txt1 = convertView.findViewById(R.id.txt1);
                holder1.txt2 = convertView.findViewById(R.id.txt2);
                convertView.setTag(holder1);
            } else {
                holder1 = (ViewHolder1) convertView.getTag();
            }
            JsonBean.DataBean bean1 = list.get(position);
            holder1.txt1.setText(bean1.getTitle());
            holder1.txt2.setText(bean1.getAuthor_name());
            DisplayImageOptions options1 = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();
            ImageLoader.getInstance().displayImage(bean1.getThumbnail_pic_s(),holder2.img2,options1);
            break;
    }
    return convertView;
}

class ViewHolder {
    TextView txt;
    ImageView img;
}

class ViewHolder1 {
    TextView txt1, txt2;
    ImageView image;
}
}

Activity基类

public abstract class BaseActivity extends FragmentActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(bindLayout());
    initView();
    initData();
    bindEvent();
}
//绑定布局的方法
public abstract int bindLayout();
//绑定组件的方法
protected  abstract  void initView();
//操作数据的方法
protected abstract void initData();
//设置监听的方法
protected abstract void bindEvent();

protected <T extends View> T bindView(int resId){
    return (T) findViewById(resId);
}
}

Fragment基类

public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(bindLayout(),container,false);
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    initView();
    initData();
    bindEvent();
}

//绑定视图
protected abstract int bindLayout();
//绑定组件
protected abstract void initView();
//操作数据
protected abstract void initData();
//设置监听
protected abstract void bindEvent();

protected <T extends View > T bindView(int resId){
    return (T) getView().findViewById(resId);
}
//绑定某个特定的视图
protected <T extends View> T bindView(View view ,int resId){
    return (T) view.findViewById(resId);
}
}

PullToRefreshListView

    //支持上拉下拉
    listview.setMode(PullToRefreshBase.Mode.BOTH);
    //判断是否有网络
    if(HttpUtils.isNetworkConnected(getActivity())){
        //有网请求数据
        HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
            @Override
            public void getData(String s) {
                gsonJX(s);
            }
        });
    }else{
        //没网读取数据库数据
        cursor = dao.Select("jsonlist", null, null, null, null, null, null);
        ArrayList<Sqlbean> list = new ArrayList<Sqlbean>();
        if(cursor.moveToFirst()){
            do {
                String title = cursor.getString(cursor.getColumnIndex("title"));
                String url = cursor.getString(cursor.getColumnIndex("url"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                list.add(new Sqlbean(title,url,img));
            }while (cursor.moveToNext());
        }
        Toast.makeText(getActivity(),"没网了",Toast.LENGTH_LONG).show();
        cursor.close();
        //适配器
        MyAdapter adapter = new MyAdapter(getActivity(),data);
        listview.setAdapter(adapter);
    }
   private void gsonJX(String s) {
    //解析
    Gson gson = new Gson();
    JsonBean bean= gson.fromJson(s,JsonBean.class);
    data = bean.getData();
    //判断是否有数据,有则不添加
    if(dao.Select("jsonlist",null,null,null,null,null,null).moveToFirst()){

    }else{
    //没有则添加
        for (JsonBean.DataBean dataBean :data) {
            ContentValues values = new ContentValues();
            values.put("title",dataBean.getTitle());
            values.put("url",dataBean.getUrl());
            values.put("img",dataBean.getThumbnail_pic_s());
            dao.Add("jsonlist",null,values);
        }
    }
    //适配器
    adapter = new MyAdapter(getActivity(),data);
    listview.setAdapter(adapter);
}
listview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
        @Override
        public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
            //判断是否有网络
            if(HttpUtils.isNetworkConnected(getActivity())){
                //有网请求数据
                HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
                    @Override
                    public void getData(String s) {
                        gsonJX(s);
                    }
                });
            }else{
                Toast.makeText(getActivity(),"没网了",Toast.LENGTH_LONG).show();
            }
            listview.onRefreshComplete();
        }

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
            //判断是否有网络
            if(HttpUtils.isNetworkConnected(getActivity())){
                //有网请求数据
                HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
                    @Override
                    public void getData(String s) {
                        Gson gson = new Gson();
                        JsonBean bean= gson.fromJson(s,JsonBean.class);
                        List<JsonBean.DataBean> data2 = bean.getData();
                        data.addAll(data2);
                        adapter.notifyDataSetChanged();
                    }
                });
            }else{
                Toast.makeText(getActivity(),"没网了",Toast.LENGTH_LONG).show();
            }
            listview.onRefreshComplete();
        }
    });

图片轮播

public class MainActivity extends AppCompatActivity {
private Banner banner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //  <uses-permission android:name="android.permission.INTERNET" />
    //        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    //        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //第一步:导入依赖
    // implementation 'com.youth.banner:banner:1.4.9'
    // implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    //第二步 写布局
    //        <com.youth.banner.Banner
    //        android:id="@+id/banner"
    //        android:layout_width="match_parent"
    //        android:layout_height="200dp" />
    //第三步:找控件
    banner = findViewById(R.id.banner);
    //第四步:数据
    List<String> list = new ArrayList<>();
    list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151721118&di=649c9a43aed72fbc4d99ec1a031510c6&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F015c7d574b9f8f6ac72525aee98351.jpg");
    list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151956771&di=0eb6f306991d24b67a13ceb336f80102&imgtype=0&src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F00613def3f1beb7a35ae136341be2b589bc46a2d.jpg_320x200.jpg");
    list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151847685&di=c7a4b5d08ec43fa629bcb690039a7629&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_080625%2F20080625_2e91a10c444877e88827vri2ZKdGMvQo.jpg");
    list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151825129&di=70bf74b87d8a15cb91a2d79f15ed0eaf&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_081016%2F20081016_fee215664d5740e56c13E2YB8giERFEX.jpg");
    list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505746504&di=930c4d677a02328a142d6fa85ed14580&imgtype=jpg&er=1&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_090113%2F20090113_6ac58b42bea94f0b318e1B6BZb5lPZl5.jpg");
    //第五步:设置配置
    ///设置图片加载器
    banner.setImageLoader(new ImageLoader() {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            //加载图片
            DisplayImageOptions options = new DisplayImageOptions.Builder()
                    .cacheInMemory(true)//让图片进行内存缓存
                    .cacheOnDisk(true)//让图片进行sdcard缓存
                    .build();
            //参数1:加载的图片地址
            //参数2:将图片设置到那个图片控件上面
            //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)
            com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage((String) path, imageView, options);
        }
    });
    banner.setImages(list);//图片数据
    banner.isAutoPlay(true);//是否轮播 true是
    banner.setDelayTime(3000);//图片切换时间
    banner.start();//开始轮播

}
}

TabLayout

   //适配器
    pager.setAdapter(new TabAdapter(getChildFragmentManager()));
    //绑定
    tab.setupWithViewPager(pager);
    
    implementation 'com.android.support:design:28.0.0'
    
    public class TabAdapter extends FragmentPagerAdapter {
String[] strings=new String[]{"关注","热点","北京"};
public TabAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int i) {
    switch (i){
        case 0:
            return new Frag01();
        case 1:
            return new Frag02();
        case 2:
            return new Frag03();
    }
    return null;
}

@Override
public int getCount() {
    return strings.length;
}
//显示名字

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return strings[position];
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值