list_item类
<TextView
android:id="@+id/itemtextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试数据"
android:textSize="15dp"
/>
MainActivity的切换方面不写了 天天写 想必大家都烦了吧,主要还是写NetStateUtil类和NewUtil类吧
NetStateUtil类
public class NetStateUtil {
/*
重点
判断网络连接是否已开
true 以打开 false 未打开
*/
public static boolean isConn(Context context){
//定义一个网络
boolean bisConnFlag = false;
//网络连接管理类
ConnectivityManager connManger = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo network = connManger.getActiveNetworkInfo();
//判断网络状态
if(network!=null){
bisConnFlag = network.isAvailable();
}
return bisConnFlag;
}
/*
获取手机网络状态
-1:无网络
0 :蜂窝网络
1 :wifi网络
*/
public static int getNetType(Context context){
//定义无网络
int mState = -1;//无网络
//网络连接管理类
ConnectivityManager connManger = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManger.getActiveNetworkInfo();
//判断网络状态
if (networkInfo==null){
return mState;
}
//获取网络状态
int type = networkInfo.getType();
//判断WIFI网络
if (type==ConnectivityManager.TYPE_WIFI){
mState = 1;
return mState;
}else if (type==ConnectivityManager.TYPE_MOBILE){//判断手机网络
mState = 0;
return mState;
}
return mState;
}
}
接下来写NewUtil类
public class NewUtill {
public String getString(String string) {
//1.Httpurlconnection进行联网请求
try {
try {
URL url = new URL(string);
HttpURLConnection urlConnection =(HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200){
//可以开始请求
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temps="";
StringBuilder stringBuilder = new StringBuilder();
while ((temps =bufferedReader.readLine())!=null){
stringBuilder.append(temps);
}
return stringBuilder.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
联网请求和判断网络的代码写完之后就可以在fragment中调用了
NetWorkFrag类
public class NetWorkFrag extends Fragment {
@Nullable
String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List<Shuju.DataBean> data;
ArrayList<Shuju.DataBean> dataBeans = new ArrayList<Shuju.DataBean>();
private ListView listview;
private Dao dao;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shou_frag, container, false);
int netType = NetStateUtil.getNetType(getActivity());
if (netType!=-1){
//有网
initdata();
listview = view.findViewById(R.id.listview);
MyAdapter myAdapter = new MyAdapter();
listview.setAdapter(myAdapter);
new MyAsync().execute(urlString);
//获取dao类
dao = new Dao(getActivity());
}else {
Toast.makeText(getContext(),"没有网络",Toast.LENGTH_LONG).show();
}
return view;
}
//类方法
class MyAsync extends AsyncTask<String,Void,String>{
private MyAdapter myAdapter;
protected String doInBackground(String... strings) {
//采用1.Httpurlconnection进行联网请求
String string = new NewUtill().getString(strings[0]);
return string;
}
protected void onPostExecute(String s) {
super.onPostExecute(s);
//4.Gson解析数据
Gson gson = new Gson();
Shuju shuju = gson.fromJson(s, Shuju.class);
data = shuju.getData();
Toast.makeText(getActivity(),"解析成功"+data,Toast.LENGTH_LONG).show();
//添加数据
dataBeans.addAll(data);
//添加进入数据库
for (int i = 0 ; i < dataBeans.size() ;i++){
ContentValues values = new ContentValues();
values.put("biaoti",dataBeans.get(i).getNews_title());
values.put("neirong",dataBeans.get(i).getNews_summary());
dao.insert("new_table",null,values);
}
myAdapter.notifyDataSetChanged();
}
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return dataBeans.size();
}
@Override
public Object getItem(int position) {
return dataBeans.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if(vh==null){
convertView = View.inflate(getActivity(), R.layout.list_item, null);
vh = new ViewHolder();
vh.tv= (TextView)convertView.findViewById(R.id.itemtextView);
convertView.setTag(vh);
}else{
vh =(ViewHolder) convertView.getTag();
}
//设置数据
String news_title = dataBeans.get(position).getNews_title();
vh.tv.setText(news_title);
return convertView;
}
}
//initdata方法
private void initdata(){
Toast.makeText(getContext(),"有网络",Toast.LENGTH_LONG).show();
}
class ViewHolder{
TextView tv;
TextView title,context;
}
}
在这fragment类中写了Adapter类 数据库的创建和dao曾的基本都很简单就不在这重复写了 写个Bean类
Shuju类
public class Shuju {
/**
* data : [{"news_id":"13811","news_summary":"6月17\u201420日,\u201c2016成都深港澳台嘉年华会\u201d(简称嘉年华会)将在成都世纪城国际会展中心举办。其主办方励展华博借力旗","news_title":"深港澳台千里连线,嘉年华会今夏入川","pic_url":"http://f.expoon.com/sub/news/2016/01/21/887844_230x162_0.jpg"},{"news_id":"13810","news_summary":"来自前不久举行的温州国际汽车展览会第一次新闻发布会的消息, 2016第14届温州国际汽车展览会定于4月7-10日在温州国","news_title":"第14届温州国际汽车展4月举行 设9大主题展馆","pic_url":"http://f.expoon.com/sub/news/2016/01/21/580828_230x162_0.jpg"},{"news_id":"13808","news_summary":"第十二届中国(南安)国际水暖泵阀交易会将于2月10日至12日(即农历正月初三至初五)在成功国际会展中心拉开帷幕。","news_title":"第十二届中国(南安)国际水暖泵阀交易会 四大亮点","pic_url":"http://f.expoon.com/sub/news/2016/01/21/745921_230x162_0.jpg"},{"news_id":"13805","news_summary":"2016上海国际专业灯光音响展即日起全面启动,海内外高端演艺设备商贸平台,商机无限,一触即发。6大洲,80个国家,25,","news_title":"2016上海灯光音响展 商机无限,一触即发","pic_url":"http://f.expoon.com/sub/news/2016/01/21/158040_230x162_0.jpg"},{"news_id":"13804","news_summary":"2016年,\u201c第四届南京国际佛事文化用品展览会\u201d将于5月26-29日在南京国际展览中心举办。","news_title":"第四届南京国际佛事展5月举行","pic_url":"http://f.expoon.com/sub/news/2016/01/21/865222_230x162_0.jpg"},{"news_id":"13802","news_summary":"2016年第三届上海国际牛仔服装博览会将于4月19-21日再次璀璨再现上海世博展览馆,共同探讨牛仔流行趋势,诠释牛仔文化","news_title":"上海国际牛仔服装博览会 拓展国际贸易大市场","pic_url":"http://f.expoon.com/sub/news/2016/01/20/370858_230x162_0.jpg"},{"news_id":"13800","news_summary":"由中国商业联合会、甘肃省商业联合会、兰州市商务局主办,甘肃省酒类商品管理局、兰州市城关区商务局、第十四届西安年货会组委会","news_title":"第三届兰州年货会在甘肃国际会展中心本月19日开幕","pic_url":"http://f.expoon.com/sub/news/2016/01/20/868385_230x162_0.jpg"},{"news_id":"13799","news_summary":"首届移动拍卖博览会已于2016年1月全面启动,由大咖拍卖主办,联合全国艺术机构共同打造拍卖艺术博览会主会场,近百场拍卖专","news_title":"首届移动拍卖艺术博览会启动","pic_url":"http://f.expoon.com/sub/news/2016/01/20/768695_230x162_0.jpg"},{"news_id":"13798","news_summary":"由武汉市贸促会、上海《理财周刊》社、湖北好博塔苏斯展览有限公司等单位联合发起的\u201c2016武汉金融理财投资博览会\u201d,将在武","news_title":"武汉金融理财投资博览会将在5月举办","pic_url":"http://f.expoon.com/sub/news/2016/01/20/512947_230x162_0.jpg"},{"news_id":"13796","news_summary":"2015年,沸点天下开创了微商行业第一个展会\u2014\u2014中国微商博览会,并于2015年成功举行两届,让微商展会从无到有,并且起了","news_title":"第三届中国微商博览会 3月底济南举办","pic_url":"http://f.expoon.com/sub/news/2016/01/20/348021_230x162_0.jpg"},{"news_id":"13793","news_summary":"\u201c2016年中国西部国际丝绸博览会\u201d最新确定于2016年5月11日至15日在南充举行。据悉,\u201c丝博会\u201d的会徽、会标及宣传","news_title":"2016中国西部国际丝绸博览会","pic_url":"http://f.expoon.com/sub/news/2016/01/19/113912_230x162_0.jpg"},{"news_id":"13792","news_summary":"由国家商务部重点支持、中国纺织品商业协会主办的第98届中国针棉织品交易会将于3月15日~17日绽放成都。作为中国国内针棉","news_title":"中国针棉织品交易会开拓\u201c西部市场\u201d","pic_url":"http://f.expoon.com/sub/news/2016/01/19/650175_230x162_0.jpg"},{"news_id":"13791","news_summary":"美丽乐山,生态宜居。今日,乐山市第二十届房地产展示交易会在该市中心城区乐山广场开幕,展会将持续到1月24日。","news_title":"乐山市第二十届房地产展示交易会开幕","pic_url":"http://f.expoon.com/sub/news/2016/01/19/321787_230x162_0.jpg"},{"news_id":"13790","news_summary":"由湖北省建筑防水协会联合湖南、河南、江西、安徽五省建筑防水协会主办\u201c2016第二届华中屋面与建筑防水技术展览会\u201d将于20","news_title":"2016华中屋面与建筑防水技术展3月即将开幕","pic_url":"http://f.expoon.com/sub/news/2016/01/19/376254_230x162_0.jpg"},{"news_id":"13789","news_summary":"近日,三亚旅游官方网从海南省\u201c首届海博会\u201d新闻发布会上获悉,海南省\u201c首届海博会\u201d将于2016年3月26日至4月1日在三亚","news_title":"2016海南国际旅游贸易博览会召开新闻发布会","pic_url":"http://f.expoon.com/sub/news/2016/01/19/958046_230x162_0.jpg"},{"news_id":"13788","news_summary":"\u201c2016阿里巴巴·贵州年货节\u201d的展销会及迎春庙会昨日启动。150多家餐饮商参与的美食节、近千个品种组成的年货展销会等,","news_title":"2016阿里巴巴·贵州年货节展销会开幕","pic_url":"http://f.expoon.com/sub/news/2016/01/19/371688_230x162_0.jpg"},{"news_id":"13787","news_summary":"据广州市政府获悉,经中国花卉协会和广州市政府批准,第二届中国盆栽花卉交易会将于本月28日至31日在广州花卉博览园举行。届","news_title":"第二届中国盆栽花卉交易会\u200b 本月28日开幕","pic_url":"http://f.expoon.com/sub/news/2016/01/18/687647_230x162_0.jpg"},{"news_id":"13786","news_summary":"\u201c视野、品质、融合是中国展览工程走向国际化的必由路径。\u201d北京逸格天骄国际展览有限公司副总经理李益日前在第二十二届国际(常","news_title":"李益:视野、品质、融合是展览工程国际化的必由路径","pic_url":"http://f.expoon.com/sub/news/2016/01/18/343556_230x162_0.jpg"},{"news_id":"13785","news_summary":"2016年1月14日,第八届中国(广州)国际集成住宅产业博览会暨2016亚太建筑科技论坛\u2014\u2014新闻发布会在广州馆隆重召开。","news_title":"第八届中国国际集成住宅产业博览会将于5月在广州举办","pic_url":"http://f.expoon.com/sub/news/2016/01/18/581830_230x162_0.jpg"},{"news_id":"13784","news_summary":"近日,丝绸之路(敦煌)国际文化博览会组委会第二次会议在兰召开。会议研究讨论了省直厅局一对一服务保障沿线省区市方案、文博会","news_title":"丝绸之路敦煌国际文化博览会筹备工作进展顺利","pic_url":"http://f.expoon.com/sub/news/2016/01/18/656693_230x162_0.jpg"}]
* info : 获取内容成功
* status : 1
*/
private String info;
private int status;
private List<DataBean> data;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* news_id : 13811
* news_summary : 6月17—20日,“2016成都深港澳台嘉年华会”(简称嘉年华会)将在成都世纪城国际会展中心举办。其主办方励展华博借力旗
* news_title : 深港澳台千里连线,嘉年华会今夏入川
* pic_url : http://f.expoon.com/sub/news/2016/01/21/887844_230x162_0.jpg
*/
private String news_id;
private String news_summary;
private String news_title;
private String pic_url;
public DataBean(String biaoti, String neirong) {
this.news_title = biaoti;
this.news_summary = neirong;
}
public String getNews_id() {
return news_id;
}
public void setNews_id(String news_id) {
this.news_id = news_id;
}
public String getNews_summary() {
return news_summary;
}
public void setNews_summary(String news_summary) {
this.news_summary = news_summary;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public String getPic_url() {
return pic_url;
}
public void setPic_url(String pic_url) {
this.pic_url = pic_url;
}
}
}
后期可以直接用gosonformat插件直接生成 建议前期还是自己打吧
断网展示条目调用判断网络方法中的断网
DisconFrag类
// String urlStrings = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List<Shuju.DataBean> data;
ArrayList<Shuju.DataBean> dataBeans = new ArrayList<Shuju.DataBean>();
private ListView listview2;
private Dao dao;
private MyAdapter2 myAdapter2;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.video_frag, container, false);
listview2 = view.findViewById(R.id.listview2);
myAdapter2 = new MyAdapter2();
listview2.setAdapter(myAdapter2);
//获取dao类
dao = new Dao(getActivity());
int DisType = NetStateUtil.getNetType(getActivity());
if (DisType!=-1){
Toast.makeText(getContext(),"有网络",Toast.LENGTH_LONG).show();
//有网
initdata();
}else {
Toast.makeText(getContext(),"没有网络",Toast.LENGTH_LONG).show();
// new MyAsync().execute(urlStrings);
Cursor cursor = dao.query("new_table", null, null, null, null, null, null);
if(cursor.moveToFirst()){
String biaoti = cursor.getString
(cursor.getColumnIndex("biaoti"));
String neirong = cursor.getString
(cursor.getColumnIndex("neirong"));
Log.e("wzq",biaoti+"-----"+neirong);
dataBeans.add(new Shuju.DataBean(biaoti,neirong));
Toast.makeText(getActivity(),"解析成功"+biaoti+"-----"+neirong,Toast.LENGTH_LONG).show();
}while(cursor.moveToNext());
cursor.close();
myAdapter2.notifyDataSetChanged();
}
return view;
}
// //类方法
// class MyAsync extends AsyncTask<String,Void,String> {
// protected String doInBackground(String... strings) {
// //采用1.Httpurlconnection进行联网请求
// String string = new NewUtill().getString(strings[0]);
// return string;
// }
// protected void onPostExecute(String s) {
// super.onPostExecute(s);
// //4.Gson解析数据
// Gson gson = new Gson();
// Log.d("1111", "onPostExecute: "+s);
// shuju = gson.fromJson(s, Shuju.class);
// data = shuju.getData();
// Toast.makeText(getActivity(),"解析成功"+ data,Toast.LENGTH_LONG).show();
// //添加数据
// dataBeans.addAll(data);
// //添加进入数据库
// for (int i = 0 ; i < dataBeans.size() ;i++){
// ContentValues values = new ContentValues();
// values.put("biaoti",dataBeans.get(i).getNews_title());
// values.put("neirong",dataBeans.get(i).getNews_summary());
// dao.insert("new_table",null,values);
// }
// myAdapter.notifyDataSetChanged();
// }
// }
class MyAdapter2 extends BaseAdapter {
@Override
public int getCount() {
return dataBeans.size();
}
@Override
public Object getItem(int position) {
return dataBeans.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh = null;
if(vh==null){
convertView = View.inflate(getActivity(), R.layout.list_item2, null);
vh = new ViewHolder();
vh.tv= (TextView)convertView.findViewById(R.id.itemtextView2);
convertView.setTag(vh);
}else{
vh =(ViewHolder) convertView.getTag();
}
//设置数据
String news_title = dataBeans.get(position).getNews_title();
vh.tv.setText(news_title);
return convertView;
}
}
//initdata方法
private void initdata(){
Toast.makeText(getContext(),"有网络",Toast.LENGTH_LONG).show();
}
class ViewHolder{
TextView tv;
TextView title,context;
}
}
db.execSQL("create table new_table(personid integer primary key autoincrement , biaoti varchar(60),neirong varchar(60))");
数据库的SQL语句
代码逻辑还是相当简单的 很适合小白练习多敲多练 这样加上自己的fragment布局 数据库就有了从数据库中查询解析展示的代码了