WeekText01

ViewPager布局
在这里插入图片描述

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="10" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#000" />

    <RadioGroup
        android:id="@+id/radio"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.5"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:text="首页"
            android:textSize="25sp" />

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="#000" />

        <RadioButton
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:text="新闻"
            android:textSize="25sp" />
    </RadioGroup>


</LinearLayout>

Pager布局

/*******************listview布局******************/
<ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
/*******************gridview布局******************/
<GridView
    android:id="@+id/gridview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:horizontalSpacing="1dp"
    android:verticalSpacing="1dp"
    android:numColumns="2" />

MainActivity(继承FragmentActivity)

//找控件
	final ViewPager pager = findViewById(R.id.pager);
    final RadioGroup radio = findViewById(R.id.radio);
//默认选中
    radio.check(radio.getChildAt(0).getId());
//创建集合
    final ArrayList<Fragment> list = new ArrayList<>();
//吧Fragment添加进去
    Frag01 frag01 = new Frag01();
    Frag02 frag02 = new Frag02();
    list.add(frag01);
    list.add(frag02);
//适配器
    pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int i) {
            return list.get(i);
        }

        @Override
        public int getCount() {
            return list.size();
        }
    });
//页面切换
    pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
        //按钮跟着切换
            radio.check(radio.getChildAt(i).getId());
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });
    //点击按钮切换viewpager
    radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId){
                case R.id.button1:
                    pager.setCurrentItem(0);
                    break;
                case R.id.button2:
                    pager.setCurrentItem(1);
                    break;
            }
        }
    });
}

Frag01(Frag02和01一样,只要把ListView换成GridView)

public class Frag01 extends Fragment {

private ListView listview;
private int page = 1;
private String path = "http://www.xieast.com/api/news/news.php";

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag_01, container, false);

    listview = view.findViewById(R.id.listview);
//动态注册广播监听网络状态
    NetWorkBroadcastReceiver receiver = new NetWorkBroadcastReceiver();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

    getActivity().registerReceiver(receiver, intentFilter);
    return view;
}
//定义广播监听网络状态
private class NetWorkBroadcastReceiver extends BroadcastReceiver {
//重写接收广播的方法
    @Override
    public void onReceive(Context context, Intent intent) {
	
	//判断是否有网
        boolean netWorkConnect = NetWorkUtil.isNetWorkConnect(context);
        if (netWorkConnect) {
            Toast.makeText(getActivity(), "有网", Toast.LENGTH_SHORT).show();
			//获取网络数据
            getServerData();
			//判断完了类型,吐司
            boolean wifi = NetWorkUtil.isWifi(context);
            if (wifi) {
                Toast.makeText(getActivity(), "wifi", Toast.LENGTH_SHORT).show();
            } else {
                boolean mobile = NetWorkUtil.isMobile(context);
                if (mobile) {
                    Toast.makeText(getActivity(), "mobile", Toast.LENGTH_SHORT).show();
                }
            }

        } else {
            Toast.makeText(getActivity(), "没网", Toast.LENGTH_SHORT).show();
			//没网,弹框设置网络
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle("设置网络");
            builder.setMessage("是否设置网络");
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //整体(wifi+mobile):
                    startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
                    //WIFI:
                    //startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
                    //流量:
                    //startActivity(new Intent(android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS));
                }


            });
            builder.setNegativeButton("取消",null);
            builder.show();

        }

    }
}

private void getServerData() {
//获取网络数据
    MyAsyncTask task = new MyAsyncTask();
//执行异步任务
    task.execute(path + "?page=" + page);

}

private class MyAsyncTask extends AsyncTask<String, Integer, String> {
//做耗时操作
    @Override
    protected String doInBackground(String... parmas) {

        String uri = parmas[0];
//把接口地址包装成网络地址
        try {
            URL url = new URL(uri);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            if(conn.getResponseCode()==200){
                InputStream stream = conn.getInputStream();
                ByteArrayOutputStream stream1 = new ByteArrayOutputStream();

                byte[] bytes = new byte[1024];
                int len=0;
                while ((len=stream.read(bytes))!=-1){
                    stream1.write(bytes,0,len);
                }
                publishProgress(10,2);
                stream.close();
                stream1.close();
                String json = stream1.toString();
                return json;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
//更新UI
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Log.i("abc",s);
//gson解析成bean对象
        Gson gson = new Gson();

        JsonBean fromJson = gson.fromJson(s, JsonBean.class);
        ArrayList<Data> data = fromJson.getData();
//listview适配器
        MyAdapter myAdapter = new MyAdapter(getActivity(),data);
        listview.setAdapter(myAdapter);

    }
}

}

NetWorkUtil(判断网络状态)

public class NetWorkUtil {
//判断是否有网
public static boolean isNetWorkConnect(Context context) {
//获取网络连接状态管理器
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//得到网络信息
    NetworkInfo info = cm.getActiveNetworkInfo();
    if (info != null) {
        return info.isAvailable();
    }
    return false;
}
//判断是WiFi
public static boolean isWifi(Context context) {
  //获取网络连接状态管理器
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//从网络连接管理器中获取WiFi
    NetworkInfo wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (wifi != null) {
        return true;
    }
    return false;
}
//判断是流量
public static boolean isMobile(Context context) {
//获取网络连接状态管理器
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//从网络连接管理器中获取流量
    NetworkInfo Mobile = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (Mobile != null) {
        return true;
    }
    return false;
}

}

MyAdapter(适配器以及ListView优化)

public class MyAdapter extends BaseAdapter {
private Context context;
private ArrayList<Data> list;

public MyAdapter(Context context, ArrayList<Data> list) {
    this.context = context;
    this.list = list;
}

@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 View getView(int position, View convertView, ViewGroup parent) {
    ViewHandler handler;
    if (convertView == null) {
        convertView = View.inflate(context, R.layout.item_layout, null);
        handler = new ViewHandler();
        handler.text1 = convertView.findViewById(R.id.textview1);
        handler.text2 = convertView.findViewById(R.id.textview2);
        convertView.setTag(handler);
    } else {
        handler = (ViewHandler) convertView.getTag();
    }
    handler.text1.setText(list.get(position).getTitle());
    handler.text2.setText(list.get(position).getDate());
    return convertView;
}

class ViewHandler {
    private TextView text1, text2;
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44305652/article/details/85335418
01
#01