ConnectivityManager类网络状态判断设置+BaseActivity和BaseFragment的封装使用+网络状态工具类+网络请求工具类
来源:互联网 发布:mac终端打开路径 编辑:程序博客网 时间:2024/05/16 06:58
一. MainActivity.java
package androidthree_1509d.connect;import android.widget.RelativeLayout;import base.BaseActivity;import fragment.NewsFrament;public class MainActivity extends BaseActivity { private RelativeLayout relativeLayout; @Override protected int getLayoutId() { return R.layout.activity_main; } @Override protected void initView() { //找到控件 relativeLayout = (RelativeLayout) findViewById(R.id.relative_layout); } @Override protected void initData() { //使用fragment替换布局的显示 getSupportFragmentManager().beginTransaction().replace(R.id.relative_layout,new NewsFrament()).commit(); }}
二. adapter包下的自定义适配器类:
package adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;public class NewsAdapter extends BaseAdapter { Context context; List<List<String>> list; public NewsAdapter(Context context, List<List<String>> list) { this.context = context; this.list = list; } @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) { if (view == null){ view = View.inflate(context,android.R.layout.simple_list_item_1,null); } TextView textView = view.findViewById(android.R.id.text1); textView.setText(list.get(i).get(0)+"----"+list.get(i).get(1)); return view; }}
三. base包下的自定义Activity和Fragment类:
1. BaseActivity.java
package base;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;public abstract class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); initView(); initData(); } //获取资源文件的id protected abstract int getLayoutId(); //初始化展示的视图 protected abstract void initView(); //初始化数据 protected abstract void initData();}
2. BaseFragment.java
package base;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public abstract class BaseFragment extends Fragment { private View view; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = initView(inflater,container); return view; } //初始化视图 protected abstract View initView(LayoutInflater inflater, ViewGroup container); @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { initData(); super.onActivityCreated(savedInstanceState); } //初始化数据 protected abstract void initData();}
四. bean包下的数据封装类
五. fragment包下的自定义Fragment类:
package fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import com.google.gson.Gson;import java.util.List;import adapter.NewsAdapter;import base.BaseFragment;import bean.DataDataBean;import internet.NetInfoCallBack;import util.GetDataUtil;import util.NetWorkUtil;import androidthree_1509d.connect.R;public class NewsFrament extends BaseFragment { private ListView listView; @Override protected View initView(LayoutInflater inflater, ViewGroup container) { View view = inflater.inflate(R.layout.news_fragment_layout, container, false); listView = view.findViewById(R.id.list_view); return view; } @Override protected void initData() { //获取网络数据,,,,填充到listView...获取之前网络判断 if (NetWorkUtil.isNetworkConnected(getActivity())){//可用 GetDataUtil.getDataFromNet("https://suggest.taobao.com/sug?code=utf-8&q=%E6%98%BE%E7%A4%BA%E5%99%A8", new NetInfoCallBack() { @Override public void getSuccessString(String string) { //获取到了数据...json Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(string, DataDataBean.class); List<List<String>> list = dataDataBean.getResult(); //设置适配器 NewsAdapter newsAdapter = new NewsAdapter(getActivity(), list); listView.setAdapter(newsAdapter); } }); }else { NetWorkUtil.showNoNetWorkDlg(getActivity()); } }}
六. Internet包下的自定义获取网络状态信息的接口类:
package internet;public interface NetInfoCallBack { public void getSuccessString(String string);}
七. util包下的自定义的工具类:
1. GetDataUtil.java
package util;import android.os.AsyncTask;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import internet.NetInfoCallBack;public class GetDataUtil { public static void getDataFromNet(final String path, final NetInfoCallBack netInfoCallBack){ AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //获取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); //转换为字符串 String s = StringUtil.streamToString(inputStream, "utf-8"); return s; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { netInfoCallBack.getSuccessString(json); } }; asyncTask.execute(); }}
2. NetWorkUtil.java
package util;import androidthree_1509d.connect.R;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetWorkUtil { /** * 判断是否有网络连接.....http://www.jianshu.com/p/10ed9ae02775 * @param context * @return */ public static boolean isNetworkConnected(Context context) { if (context != null) { // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理) ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 获取NetworkInfo对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); //判断NetworkInfo对象是否为空 if (networkInfo != null) return networkInfo.isAvailable(); } return false; } /** * 网络无连接时跳转页面.....http://blog.csdn.net/cy524563/article/details/41686735 * @param context */ public static void showNoNetWorkDlg(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.app_name) .setMessage("网络连接不可用,是否去设置?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 跳转到系统的网络设置界面 Intent intent = null; // 先判断当前系统版本 if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上 intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); }else{ intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings"); } context.startActivity(intent); } }) .setNegativeButton("取消", null) .show(); }}
3. StringUtil.java
package util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class StringUtil { public static String streamToString(InputStream inputStream, String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }}
八. res 文件夹下的布局文件:
1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relative_layout" android:layout_width="match_parent" android:layout_height="match_parent"></RelativeLayout>
2. fragment_layout.xml
<?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:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView></LinearLayout>
九. 在AndroidMainifest.xml中添加
1. 网络请求权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
2. 判断网络状态的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
阅读全文
0 0
- ConnectivityManager类网络状态判断设置+BaseActivity和BaseFragment的封装使用+网络状态工具类+网络请求工具类
- 判断网络状态工具类
- 网络状态判断工具类
- 判断网络状态工具类
- 判断网络状态工具类
- 网络状态判断工具类
- 判断网络状态工具类
- 网络状态判断工具类
- Android判断网络状态的工具类
- 判断网络状态的工具类__NetWorkUtil
- 网络状态工具类
- Android中用ConnectivityManager 判断网络的工具类
- 工具类--NetUtil 判断网络状态
- 网络状态判断工具
- 封装网络请求工具类
- Android:判断用户网络状态的Kotlin工具类
- Android 获取网络状态的工具类
- Android 获取网络状态的工具类
- pthread_cleanup_push与pthread_cleanup_pop的目的 作用
- poj 2393 && bzoj 1680: [Usaco2005 Mar]Yogurt factory(贪心)
- django与百度ueditor 集成之二:涂鸦,抓图,搜视频,图片浏览
- 解决Ext grid 单元格不能复制的问题
- php 数组排序
- ConnectivityManager类网络状态判断设置+BaseActivity和BaseFragment的封装使用+网络状态工具类+网络请求工具类
- Java与c++不同的地方
- Input.GetMouseButtonDown()方法 &Input.GetMouseButton()方法
- 在eclipse,Hbuilder中使用svn
- 关于Grid内嵌控件:ReporisitoryItemLookUpEdit的使用
- VR技术推动学生的深度学习还真不是“扯淡”
- nodejs 对象保存redis 去除propotype
- App启动画面问题
- QT 生成EXE执行文件