- Activity中的代码
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private RadioGroup radioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById( R.id.radioButton).setBackgroundColor(Color.RED);
findViewById( R.id.radioButton2).setBackgroundColor(Color.GREEN);
pager = findViewById(R.id.pager);
radioGroup = findViewById(R.id.radiogroup);
//默认选中第一个
radioGroup.check(radioGroup.getChildAt(0).getId());
//设置页面滑动数据
ArrayList<Fragment> list=new ArrayList<Fragment>();
FragListview fragListview=new FragListview();
FragGridView fragGridView=new FragGridView();
list.add(fragListview);
list.add(fragGridView);
///设置适配器
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) {
//当页面发生改变 按钮也要跟着变
radioGroup.check(radioGroup.getChildAt(i).getId());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
//页面跟着按钮改变
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
//根据点击按钮改变页面
switch (checkedId){
case R.id.radioButton:
findViewById( R.id.radioButton).setBackgroundColor(Color.RED);
findViewById( R.id.radioButton2).setBackgroundColor(Color.GREEN);
pager.setCurrentItem(0);
break;
case R.id.radioButton2:
findViewById( R.id.radioButton).setBackgroundColor(Color.GREEN);
findViewById( R.id.radioButton2).setBackgroundColor(Color.RED);
pager.setCurrentItem(1);
break;
}
}
});
}
}
- 这是ActivityXml布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">
<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="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:padding="8dp"
android:text="list列表" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:padding="8dp"
android:text="grid列表" />
</RadioGroup>
</LinearLayout>
</RelativeLayout>
- Fragment适配器代码如下
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();
}
}
- FragListView代码
public class FragListview 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.fraglistview, container, false);
listView = view.findViewById(R.id.listview);
//解析网络数据
new Thread() {
@Override
public void run() {
super.run();
//请求数据
String s = HttpUtile.requestHttpGet("https://api.apiopen.top/musicRankings");
//解析
Gson gson = new Gson();
JsonListBean listBean = gson.fromJson(s, JsonListBean.class);
List<JsonListBean.ResultBean> list = listBean.getResult();
//子线程处理数据完毕
//更新ui
Message message = new Message();
message.what = 0;
message.obj = list;
handler.sendMessage(message);
}
}.start();
return view;
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
List<JsonListBean.ResultBean> list = (List<JsonListBean.ResultBean>) msg.obj;
//展示到listview上
listView.setAdapter(new MyAdapter(list,getActivity()));
break;
}
}
};
5.FragGridView代码如下
public class FragGridView 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.fraggradview,container,false);
grid = view.findViewById(R.id.grid);
//请求数据
MyAsyncTask task=new MyAsyncTask();
task.setCallbacks(this);
task.execute("https://api.apiopen.top/musicRankings");
return view;
}
@Override
public String getData(String string) {
//解析
Gson gson = new Gson();
JsonListBean listBean = gson.fromJson(string, JsonListBean.class);
List<JsonListBean.ResultBean> list = listBean.getResult();
grid.setAdapter(new MyAdapter(list,getActivity()));
Toast.makeText(getActivity(),string,Toast.LENGTH_LONG).show();
return null;
}
}
6.HttpUtile网络请求
public static String requestHttpGet(String strUrl) {
try { //设置url
URL url = new URL(strUrl);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为get请求
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;
}
public static Bitmap httpGETImage(String string) {
try {
//设置URL
URL url = new URL(string);
//得到HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
//连接超时时间
connection.setConnectTimeout(5000);
//读取超时
connection.setReadTimeout(5000);
//获取请求码 一般情况下200是成功
int code = connection.getResponseCode();
//判断请求码是否 请求成功
if (code == HttpURLConnection.HTTP_OK) {
//得到数据
InputStream stream = connection.getInputStream();
// 如果是图片
Bitmap bitmap = BitmapFactory.decodeStream(stream);
return bitmap;
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//post请求
public static String httpPost(String str1, String str2) {
// http://apis.juhe.cn/cook/query ? key=&menu=蛋炒饭
try {
//设置url
URL url = new URL(str1);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为post请求
connection.setRequestMethod("POST");
//使用写入和读取(post请求必须要写这个俩)
connection.setDoOutput(true);
connection.setDoInput(true);
//
PrintWriter writer = new PrintWriter(connection.getOutputStream());
writer.write(str2);// key= &menu=蛋炒饭
writer.flush();
;//刷新
//判断是否成功
int code = connection.getResponseCode();
if (code == 200) {
//读取数据
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
//拼接字符串
StringBuilder builder = new StringBuilder();
String s = "";
//读取数据
while ((s = reader.readLine()) != null) {
//拼接字符串
builder.append(s);
}
return builder.toString();
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
7.MyAsyncTask代码如下
public class MyAsyncTask extends AsyncTask<String ,Void,String> {
@Override
protected String doInBackground(String... strings) {
return HttpUtile.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;
}
}
8.listViewAdapter
public class MyListAdapter extends BaseAdapter {
private List<JsonListBean.ResultBean> list;
private Context context;
public MyListAdapter(List<JsonListBean.ResultBean> 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;
if (convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.item_list, null);
holder = new ViewHolder();
holder.image = convertView.findViewById(R.id.ima);
holder.text = convertView.findViewById(R.id.name);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
JsonListBean.ResultBean resultBean = list.get(position);
holder.text.setText(resultBean.getName());
ImageLoader.getInstance().displayImage(resultBean.getBg_pic(),holder.image);
return convertView;
}
class ViewHolder{
TextView text;
ImageView image;
}
}```