android_判断网络/添加Fragment显示listview
2017-09-14 11:39
381 查看
权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission>
布局控件:
activity_main: 写fragment时 除了要写name外 还要写id 不然会报错因为id是fragment唯一标识<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwei.day_14rikao.MainActivity"> <fragment android:id="@+id/ff" android:name="com.bwei.day_14rikao.BeaseFragmrnt" android:layout_width="match_parent" android:layout_height="match_parent"></fragment> </android.support.constraint.ConstraintLayout>
fragment:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/lv"/> </LinearLayout> MainActivity: Fragment:
package com.bwei.day_14rikao; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * author:Created by WangZhiQiang on 2017/9/14. */ public class BeaseFragmrnt extends Fragment { private List<String> lists; private View view; private ListView lv; private StringBuilder builder; private List<List<String>> result; ArrayList<String> list = new ArrayList<>(); @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //初始化控件 lv = (ListView) view.findViewById(R.id.lv); //获取判断网络返回值 boolean b = isNetworkConnected(getActivity()); Log.e("gsyfdgvsydhfbsjh", b + ""); //判断是否连接网络 if (b) { //如果返回true则加载数据 new MAsticy().execute("https://suggest.taobao.com/sug?code=utf-8&q=%E6%98%BE%E7%A4%BA%E5%99%A8"); } else { //否则调用此方法进行下一步操作 checkNetwork(getActivity()); } } public class MAsticy extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { try { //获取路径 URL url = new URL(strings[0]); //获取 HttpURLConnection对象 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //获取请求码 int responseCode = urlConnection.getResponseCode(); //判断请求码 if (responseCode == 200) { //将路径转换字节流获取 InputStream inputStream = urlConnection.getInputStream(); //使用bufferReader读取 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); //拼接字符串 builder = new StringBuilder(); //定义变量 String str = ""; //循环读取 while ((str = bufferedReader.readLine()) != null) { //拼接 builder.append(str); } } //返回 return builder.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { //创建gson对象 Gson gson = new Gson(); //解析gson串 GsonBean gsonBean = gson.fromJson(s, GsonBean.class); //获取数据 result = gsonBean.getResult(); //遍历集合 for (int i = 0; i < result.size(); i++) { lists = result.get(i); //添加到新集合 list.addAll(lists); } //设置适配器 lv.setAdapter(new MAdapter()); super.onPostExecute(s); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } } private class MAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; String s = list.get(i); if (view == null) { view = View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); holder = new ViewHolder(); holder.text1 = (TextView) view.findViewById(android.R.id.text1); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.text1.setText(s); return view; } class ViewHolder { TextView text1; } } ////////////////////////////////////// //创建网络请求方法 public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mNetworkInfo != null) { return mNetworkInfo.isAvailable(); } } return false; } /////////////////////////////////////// // 如果没有网络,则弹出网络设置对话框 public void checkNetwork(final Activity activity) { if (!isNetworkConnected(activity)) { TextView msg = new TextView(activity); msg.setText("当前没有可以使用的网络,请设置网络!"); AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle("网络状态提示") .setView(msg) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // 跳转到设置界面 activity.startActivityForResult(new Intent( Settings.ACTION_WIRELESS_SETTINGS), 0); } }).setNegativeButton("取消", null).create().show(); } return ; } }
相关文章推荐
- 判断网络状态 fragment隐藏显示 xlistview多条目加载数据
- android fragment 显示ListView,并可以添加动画图片
- Android中http请求加异步任务加判断是否开启网络并显示在listview上
- Android基础篇之在ListView中显示网络图片
- 历史版本1:Android基础篇之在ListView中显示网络图片
- [Android实例] Android ListView从网络获取图片及文字显示 + 自己搭建的服务器的xml文件
- Android ListView从网络获取图片及文字显示
- Android基础篇之在ListView中显示网络图片
- Android实战简易教程-第十一枪(树形组件:ExpandableListView显示和动态添加删除)
- android ListView利用SimpleAdapter显示特定布局并且异步加载网络图片
- Android ListView从网络获取图片及文字显示
- android ListView显示网络图片
- Android总结:正确判断当前的Fragment是显示还是隐藏
- Android ListView从网络获取图片及文字显示
- 两个Fragment切换,BFragment中的listview 数据获取回来 为什第一次进入不显示第二次进入数据就显示了呢?ListView网络数据没有及时更新
- 网络判断+xlistview上拉加载、下拉刷新+Tablayout +图片拖拽缩放+数据库存储 3、案例完成思路要求: 模块一:用fragment+viewpager+Tablayout实现页面
- Android ListView从网络获取图片及文字显示
- Android:ListView异步加载图片(实现网络下载、存储本地、缓存内存、压缩显示)
- Android通过广播判断网络连接(仿QQ网络连接显示)
- Android ListView从网络获取图片及文字显示