一·主页面MainActivity
public class MainActivity extends AppCompatActivity {
private ViewPager pager;
private RadioGroup radio;
private ArrayList<Fragment> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
pager = findViewById (R.id.pager);
radio = findViewById (R.id.radioGroup);
list = new ArrayList<Fragment> ();
list.add (new Frag_01());
list.add (new Frag_02());
list.add (new Frag_03());
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) {
}
});
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;
case R.id.button3:
pager.setCurrentItem (2);
break;
}
}
});
}
}
二·网络请求
public class HttpUitl {
//注意工具类中使用静态方法
public static boolean isNetworkConnected(Context context) {
//判断上下文是不是空的
//为啥要判断啊? 防止context是空的导致 报空指针异常
if (context != null) {
//获取连接管理器
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态mConnectivityManager.getActiveNetworkInfo();
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
//判断网络是否可用//如果可以用就是 true 不可用就是false
return mNetworkInfo.isAvailable();
}
}
return false;
}
//=====================================================
public static String requestString(String strUrl) {
try {
//把String 变成URL
URL url = new URL(strUrl);
//打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//连接超时时间
connection.setConnectTimeout(5000);
//读取超时时间
connection.setReadTimeout(5000);
//设置请求方式(要大写)
connection.setRequestMethod("GET");
//判断请求码 HttpURLConnection.HTTP_OK
if (connection.getResponseCode() == 200) {
//获取输入流(输入=>读,输出=>写)
//ctrl+alt+V 补全代码
InputStream stream = connection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(stream, "utf-8");
BufferedReader reader = new BufferedReader(inputStreamReader);
//拼接字符串
StringBuffer buffer = new StringBuffer();
String str = "";
//读取字符串
while ((str = reader.readLine()) != null) {
//拼接字符串
buffer.append(str);
}
return buffer.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
三·Frag01
public class Frag_01 extends Fragment {
private ListView listView;
String strURL ="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
@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.listView1);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated (savedInstanceState);
//网络请求
new Thread (){
@Override
public void run() {
super.run ();
//判断网络
boolean isnNet = HttpUitl.isNetworkConnected (getActivity ());
String s="";
if(isnNet){
//如果有网络就加载网络数据
s = HttpUitl.requestString (strURL);
}else{
//如果没有网络就加载网络数据
}
Message message = new Message ();
message.what=0;
message.obj=s;
handler.sendMessage(message);
}
}.start ();
}
Handler handler = new Handler (){
@Override
public void handleMessage(Message msg) {
super.handleMessage (msg);
switch (msg.what) {
case 0:
//第七步:得到数据并解析
String s = (String) msg.obj;
//解析
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson (s, JsonBean.class);
List<JsonBean.DataBean> data = jsonBean.getData ();
//第八步:展示数据到listview上
listView.setAdapter(new MyAdapter(data,getActivity()));
break;
}
}
};
}
四·Frag_02
public class Frag_02 extends Fragment {
private ListView listView;
String strURL ="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate (R.layout.frag_02, container, false);
listView = view.findViewById (R.id.listView2);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated (savedInstanceState);
MyAsyncTask task = new MyAsyncTask ();
task.execute (strURL);
}
class MyAsyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
if(HttpUitl.isNetworkConnected (getActivity ())){
return HttpUitl.requestString (strings[0]);
}else{
return "";
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute (s);
if(s.equals ("")){
}else{
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson (s, JsonBean.class);
List<JsonBean.DataBean> data = jsonBean.getData ();
//第八步:展示数据到listview上
listView.setAdapter(new MyAdapter (data,getActivity()));
}
}
}
}
五·MyAdapter
public class MyAdapter extends BaseAdapter{
private List<JsonBean.DataBean> data;
private Context context;
public MyAdapter(List<JsonBean.DataBean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.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) {
ViewHolder holder=null;
if(convertView==null){
convertView = View.inflate (context, R.layout.itme, null);
holder = new ViewHolder();
holder.text = convertView.findViewById (R.id.text);
holder.image = convertView.findViewById (R.id.image);
convertView.setTag (holder);
}else {
holder = (ViewHolder) convertView.getTag ();
}
JsonBean.DataBean dataBean = data.get (position);
holder.text.setText (dataBean.getNews_id ());
Glide.with (context).load (dataBean.getPic_url ()).into (holder.image);
return convertView;
}
class ViewHolder{
TextView text;
ImageView image;
}
}
⑦
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width=“match_parent”
android:layout_height=“0dp”
android:layout_weight=“8”></android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<RadioButton
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="首页"
android:button="@null"
android:drawableTop="@drawable/sel"
android:checked="true"
android:textSize="25sp"
android:gravity="center"
/>
<RadioButton
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="首页"
android:button="@null"
android:drawableTop="@drawable/sel"
android:checked="true"
android:textSize="25sp"
android:gravity="center"
/>
<RadioButton
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="首页"
android:button="@null"
android:drawableTop="@drawable/sel"
android:checked="true"
android:textSize="25sp"
android:gravity="center"
/>
</RadioGroup>