第一个页面效果图(listview)
第二个页面效果图(gridview)
滑动页面、点击按钮布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
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.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:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/radiogroup"
android:orientation="horizontal"
android:gravity="center">
<RadioButton
android:id="@+id/radiobutton1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/ser" android:button="@null"
android:text="1"
android:gravity="center"/>
<RadioButton
android:id="@+id/radiobutton2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/ser"
android:button="@null"
android:text="2"
android:gravity="center"/>
</RadioGroup>
</LinearLayout>
滑动页面,点击按钮代码
package com.bawei.week;
import android.annotation.SuppressLint;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioGroup;
import com.bawei.week.adapter.MyFrangmentAdapter;
import com.bawei.week.frag.FragListview;
import com.bawei.week.frag.Fragfragview;
import java.util.ArrayList;
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private RadioGroup radiogroup;
private Fragfragview f2;
private FragListview f1;
@SuppressLint("WrongViewCast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
pager = findViewById(R.id.pager);
radiogroup = findViewById(R.id.radiogroup);
//默认选中第一个
radiogroup.check(radiogroup.getChildAt(0).getId());
//设置页面滑动数据
ArrayList<Fragment>list=new ArrayList<Fragment>();
f1 = new FragListview();
f2 = new Fragfragview();
list.add(f1);
list.add(f2);
//设置适配器
pager.setAdapter(new MyFrangmentAdapter(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.radiobutton1:
pager.setCurrentItem(0);
break;
case R.id.radiobutton2:
pager.setCurrentItem(1);
break;
}
}
});
}
}
listview布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview"
></ListView>
</android.support.constraint.ConstraintLayout>
listview代码块
package com.bawei.week.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 com.bawei.week.R;
import com.bawei.week.adapter.MyAdapter;
import com.bawei.week.bean.Bean;
import com.bawei.week.bean.Result;
import com.bawei.week.http.HttpUtile;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
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() {
//请求数据
String s = HttpUtile.requestHttpGet("https://api.apiopen.top/musicRankings");
//解析
Gson gson = new Gson();
Bean fromJson = gson.fromJson(s, Bean.class);
ArrayList<Result> list = fromJson.getResult();
//子线程处理数据完毕
//更新
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:
ArrayList<Result> alist= (ArrayList<Result>) msg.obj;
//展示到listview上
listview.setAdapter(new MyAdapter(alist,getActivity()));
break;
}
}
};
}
bean包里最大包Bean
package com.bawei.week.bean;
import java.util.ArrayList;
public class Bean {
/*
"code": 200,
"message": "成功!",
"result"
*/
private String code;
private String message;
private ArrayList<Result> result;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public ArrayList<Result> getResult() {
return result;
}
public void setResult(ArrayList<Result> result) {
this.result = result;
}
@Override
public String toString() {
return "Bean{" +
"code='" + code + '\'' +
", message='" + message + '\'' +
", result=" + result +
'}';
}
}
bean第二大包Result
package com.bawei.week.bean;
import java.util.ArrayList;
public class Result {
/* "bg_pic": "http://business0.qianqian.com/qianqian/file/5bfe4ebfac057_381.png",
"color": "0x5B9400",
"comment": "该榜单是根据千千音乐平台歌曲每日播放量自动生成的数据榜单,统计范围为近期发行的歌曲,每日更新一次",
"content"*/
private String bg_pic;
private String color;
private String comment;
private ArrayList<Content> content;
public String getBg_pic() {
return bg_pic;
}
@Override
public String toString() {
return "Result{" +
"bg_pic='" + bg_pic + '\'' +
", color='" + color + '\'' +
", comment='" + comment + '\'' +
", content=" + content +
'}';
}
public void setBg_pic(String bg_pic) {
this.bg_pic = bg_pic;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public ArrayList<Content> getContent() {
return content;
}
public void setContent(ArrayList<Content> content) {
this.content = content;
}
}
bean最小包Content
package com.bawei.week.bean;
public class Content {
/* "album_id": "610722307",
"album_title": "天份",
"all_rate": "96,128,224,320,flac",
"author": "薛之谦",
"biaoshi": "first,lossless,perm-1",
"pic_small": "http://qukufile2.qianqian.com/data2/pic/3458034daedb22dbd74ae783e1e67ea1/610728117/610728117.jpg@s_1,w_90,h_90",
"rank_change": "0",
"song_id": "610722309",
"title": "天份"*/
private String album_id;
private String album_title;
private String all_rate;
private String author;
private String biaoshi;
private String pic_small;
private String rank_change;
private String song_id;
private String title;
public String getAlbum_id() {
return album_id;
}
public void setAlbum_id(String album_id) {
this.album_id = album_id;
}
public String getAlbum_title() {
return album_title;
}
public void setAlbum_title(String album_title) {
this.album_title = album_title;
}
public String getAll_rate() {
return all_rate;
}
public void setAll_rate(String all_rate) {
this.all_rate = all_rate;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getBiaoshi() {
return biaoshi;
}
public void setBiaoshi(String biaoshi) {
this.biaoshi = biaoshi;
}
public String getPic_small() {
return pic_small;
}
public void setPic_small(String pic_small) {
this.pic_small = pic_small;
}
public String getRank_change() {
return rank_change;
}
public void setRank_change(String rank_change) {
this.rank_change = rank_change;
}
public String getSong_id() {
return song_id;
}
public void setSong_id(String song_id) {
this.song_id = song_id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "Content{" +
"album_id='" + album_id + '\'' +
", album_title='" + album_title + '\'' +
", all_rate='" + all_rate + '\'' +
", author='" + author + '\'' +
", biaoshi='" + biaoshi + '\'' +
", pic_small='" + pic_small + '\'' +
", rank_change='" + rank_change + '\'' +
", song_id='" + song_id + '\'' +
", title='" + title + '\'' +
'}';
}
}
MyAdapter
package com.bawei.week.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.week.R;
import com.bawei.week.bean.Result;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private ArrayList<Result> list;
private Context context;
public MyAdapter(ArrayList<Result> 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) {
Hdeler hd = new Hdeler();
if(convertView==null){
convertView= View.inflate(context, R.layout.item,null);
hd.tx=convertView.findViewById(R.id.tetview);
hd.image=convertView.findViewById(R.id.image);
convertView.setTag(hd);
}else{
hd= (Hdeler) convertView.getTag();
}
Result result = list.get(position);
hd.tx.setText(list.get(position).getComment());
// holder.image.setImageBitmap( );
ImageLoader.getInstance().displayImage(result.getBg_pic(), hd.image);
return convertView;
}
class Hdeler{
TextView tx;
ImageView image;
}
}
MyFragmentAdapter
package com.bawei.week.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
public class MyFrangmentAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment>list;
public MyFrangmentAdapter(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();
}
}
App
package com.bawei.week.app;
import android.app.Application;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class App extends Application {
@Override
public void onCreate() {
//配置属性
super.onCreate();
DisplayImageOptions options=new DisplayImageOptions.Builder().build();
//设置imageloder
ImageLoaderConfiguration Loader=new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(options)//设置配置属性
.build();
//获得实例
ImageLoader imageLoader=ImageLoader.getInstance();
//初始化
imageLoader.init(Loader);
}
}
Http
package com.bawei.week.http;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUtile {
/**
* 请求数据GET请求
*/
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;
}
}
MyAsyncTask
package com.bawei.week.http;
import android.os.AsyncTask;
import com.bawei.week.frag.Fragfragview;
public class MyAsyncTask extends AsyncTask<String,Integer,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{
void getData(String string);
}
private Callbacks callbacks;
public void setCallbacks(Callbacks callbacks) {
this.callbacks = callbacks;
}
}
item布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/image"
android:layout_width="150dp"
android:layout_height="150dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tetview"/>
</LinearLayout>
清单文件权限很重要哦
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bawei.week">
<!-- <uses-permission android:name="android.permission.INTERNET"/> -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".app.App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>