1.布局:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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=".MainActivity" android:orientation="vertical"> <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:textSize="25dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:layout_marginLeft="20dp" android:text="首页"/> <RadioButton android:id="@+id/button2" android:textSize="25dp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:layout_marginLeft="20dp" android:text="财富"/> <RadioButton android:id="@+id/button3" android:textSize="25dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:layout_marginLeft="20dp" android:text="口碑"/> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:textSize="25sp" android:layout_marginLeft="20dp" android:text="朋友" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:textSize="25sp" android:layout_marginLeft="20dp" android:text="我的" /> </RadioGroup> </LinearLayout>
2.frag01.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" android:background="#00f" android:orientation="vertical"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>
3.frag02.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" android:orientation="vertical"> <GridView android:id="@+id/gridView" android:numColumns="2" android:layout_width="wrap_content" android:layout_height="wrap_content"></GridView> </LinearLayout>
4.frag03.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" android:background="#0ff" android:orientation="vertical"> </LinearLayout>
5.text.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" android:orientation="vertical"> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
6.在清单文件里写权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/>
<application
android:name=".app.App"
</application>在加一个android:name=".app.App"不要忘记。
7.在MainActivity里边写:
package com.bawei.qizhuangzhuang20190102; import android.graphics.Color; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.os.Bundle; import android.widget.RadioGroup; import com.bawei.qizhuangzhuang20190102.adapter.MyFragmentAdapter; import com.bawei.qizhuangzhuang20190102.frag.Frag_01; import com.bawei.qizhuangzhuang20190102.frag.Frag_02; import com.bawei.qizhuangzhuang20190102.frag.Frag_03; import java.util.ArrayList; public class MainActivity extends FragmentActivity { private ViewPager pager; private RadioGroup radio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); pager = findViewById (R.id.pager); radio = findViewById (R.id.radioGroup); radio.check (radio.getChildAt (0).getId ()); ArrayList<Fragment> list = new ArrayList<Fragment> (); Frag_01 frag_01 = new Frag_01 (); Frag_02 frag_02 = new Frag_02 (); Frag_03 frag_03 = new Frag_03 (); list.add (frag_01); list.add (frag_02); list.add (frag_03); pager.setAdapter (new MyFragmentAdapter(getSupportFragmentManager (),list) ); 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; } } }); } }
8.建一个App类:
package com.bawei.qizhuangzhuang20190102.app; import android.app.Application; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; /** * @Auther: 祁壮壮 * @Date: 2019/1/2 14:16:58 * @Description: */ public class App extends Application { @Override public void onCreate() { super.onCreate(); DisplayImageOptions options = new DisplayImageOptions.Builder ().build (); ImageLoaderConfiguration loader = new ImageLoaderConfiguration.Builder (this).defaultDisplayImageOptions (options).build (); ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.init(loader); } }
9.在建一个Http类:
package com.bawei.qizhuangzhuang20190102.http; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; /** * @Auther: 祁壮壮 * @Date: 2019/1/2 10:28:49 * @Description: */ public class Http { public static boolean isNetWorkConnected(Context context) { //判断网络 if (context != null) { ConnectivityManager myConnectivityManager = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE); NetworkInfo info = myConnectivityManager.getActiveNetworkInfo (); if(info!=null){ return info.isAvailable (); } } return false; } public static String requestHttpGet(String strUrl){ try { URL url=new URL (strUrl); //获取HttpURLConnection HttpURLConnection connection =(HttpURLConnection)url.openConnection (); connection.setRequestMethod ("GET"); connection.setConnectTimeout (5000); connection.setReadTimeout (5000); int code = connection.getResponseCode (); if(code == HttpURLConnection.HTTP_OK){ InputStream stream = connection.getInputStream (); BufferedReader reader = new BufferedReader (new InputStreamReader (stream,"utf-8")); StringBuilder builder = new StringBuilder (); String str = ""; while((str = reader.readLine ())!=null){ builder.append (str); } return builder.toString (); } connection.disconnect (); } catch (Exception e) { e.printStackTrace (); } return null; } }
10.建一个Frag_01类:代码如下:
package com.bawei.qizhuangzhuang20190102.frag; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.Toast; import com.bawei.qizhuangzhuang20190102.R; import com.bawei.qizhuangzhuang20190102.adapter.MyAdapter; import com.bawei.qizhuangzhuang20190102.bean.JsonBean; import com.bawei.qizhuangzhuang20190102.http.Http; import com.google.gson.Gson; import java.util.List; /** * @Auther: 祁壮壮 * @Date: 2019/1/2 14:28:27 * @Description: */ public class Frag_01 extends Fragment { private ListView listView; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.frag01,container,false); listView = view.findViewById(R.id.listView); new Thread(){ @Override public void run() { super.run(); boolean netWorkConnected = Http.isNetWorkConnected(getActivity()); if (netWorkConnected){ String s = Http.requestHttpGet("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); Gson gson = new Gson(); JsonBean jsonBean = gson.fromJson(s, JsonBean.class); List<JsonBean.DataBean> list = jsonBean.getData(); Message message = new Message(); message.what = 0; message.obj = list; handler.sendMessage(message); }else { handler.sendEmptyMessageDelayed(1,0); } } }.start(); return view; } Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: List<JsonBean.DataBean> list =(List<JsonBean.DataBean>) msg.obj; listView.setAdapter(new MyAdapter(list,getActivity())); break; case 1: Toast.makeText(getActivity(),"没网",Toast.LENGTH_SHORT).show(); break; } } }; }
11.建第二个Frag_02,代码如下:
package com.bawei.qizhuangzhuang20190102.frag; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import com.bawei.qizhuangzhuang20190102.R; import com.bawei.qizhuangzhuang20190102.adapter.MyAdapter; import com.bawei.qizhuangzhuang20190102.adapter.MyAsyncTask; import com.bawei.qizhuangzhuang20190102.bean.JsonBean; import com.google.gson.Gson; import java.util.List; /** * @Auther: 祁壮壮 * @Date: 2019/1/2 14:36:44 * @Description: */ public class Frag_02 extends Fragment implements MyAsyncTask.Callbacks { private GridView grid; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.frag02,container,false); grid = view.findViewById(R.id.gridView); //请求数据 MyAsyncTask task = new MyAsyncTask(); task.setCallbacks(this); task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); return view; } @Override public String getData(String string) { Gson gson = new Gson(); JsonBean jsonBean = gson.fromJson(string, JsonBean.class); List<JsonBean.DataBean> list = jsonBean.getData(); grid.setAdapter(new MyAdapter(list,getActivity())); return null; } }
12.建个适配器类:MainActivity里边的适配器:
package com.bawei.qizhuangzhuang20190102.adapter; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; /** * @Auther: 祁壮壮 * @Date: 2019/1/2 14:48:41 * @Description: */ public class MyFragmentAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> list; public MyFragmentAdapter(FragmentManager fm,ArrayList<Fragment> list){ super(fm); this.list = list; } @Override public Fragment getItem(int i) { return list.get (i); } @Override public int getCount() { return list.size(); } }
13.listview跟GridView适配器:
package com.bawei.qizhuangzhuang20190102.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bawei.qizhuangzhuang20190102.R; import com.bawei.qizhuangzhuang20190102.bean.JsonBean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * @Auther: lenovo * @Date: 2019/1/2 16:25:43 * @Description: */ public class MyAdapter extends BaseAdapter { private Context context; private List<JsonBean.DataBean> list; public MyAdapter(List<JsonBean.DataBean> list, Context context) { this.list = list; this.context = context; } @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) { ViewHolder holder = null; if (convertView == null){ convertView = View.inflate(context, R.layout.text,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 = list.get(position); holder.text.setText(dataBean.getNews_summary()); ImageLoader.getInstance().displayImage(dataBean.getPic_url(),holder.image); return convertView; } class ViewHolder{ TextView text; ImageView image; } }
14.建一个MyAsyncTask类:
package com.bawei.qizhuangzhuang20190102.adapter; import android.os.AsyncTask; import com.bawei.qizhuangzhuang20190102.http.Http; /** * @Auther: 祁壮壮 * @Date: 2019/1/2 16:26:12 * @Description: */ public class MyAsyncTask extends AsyncTask<String,Void,String> { @Override protected String doInBackground(String... strings) { return Http.requestHttpGet(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); callbacks.getData(s); } public interface Callbacks{ String getData(String string); } private Callbacks callbacks; public void setCallbacks(Callbacks callbacks){ this.callbacks = callbacks; } }
15.最后在写个bean类。