//布局
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="9" />
<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/listview"
android:padding="5dp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="listview" />
<RadioButton
android:id="@+id/gridview"
android:padding="5dp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="GridView" />
</RadioGroup>
public class MainActivity extends AppCompatActivity {
private ListView lv;
private ViewPager pager;
private ArrayList<Fragment> list;
private RadioGroup radioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注意在清单文件中添加权限
//查找资源ID
pager = findViewById(R.id.pager);
radioGroup = findViewById(R.id.radioGroup);
//默认选中第一个
radioGroup.check(radioGroup.getChildAt(0).getId());
//设置背景颜色
findViewById(R.id.listview).setBackgroundColor(Color.RED);
findViewById(R.id.gridview).setBackgroundColor(Color.WHITE);
//添加集合
list = new ArrayList<Fragment>();
//添加数据展示界面
list.add(new Fraglist());
list.add(new Fraggrid());
//设置适配器
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.listview:
//设置按钮背景色
findViewById(R.id.listview).setBackgroundColor(Color.RED);
findViewById(R.id.gridview).setBackgroundColor(Color.WHITE);
pager.setCurrentItem(0);
break;
case R.id.gridview:
findViewById(R.id.listview).setBackgroundColor(Color.WHITE);
findViewById(R.id.gridview).setBackgroundColor(Color.RED);
pager.setCurrentItem(1);
break;
}
}
});
}
}
/**
-
设置fragment滑动的适配器
*/
public class MyFragmentAdapter extends FragmentPagerAdapter {
private ArrayList list;
public MyFragmentAdapter(FragmentManager fm,ArrayList list) {
super(fm);
this.list=list;
}@Override public Fragment getItem(int i) { return list.get(i); } @Override public int getCount() { return list.size(); }
}
=============================
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;
}
//==================GET请求======================
public static String HttpGet(String strUri){
try {
URL url=new URL(strUri);
//获取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 inputStream = connection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream,"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;
}
}
//继承AsyncTask
public class MyAsyncTask extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... strings) {
//返回值
return Http.HttpGet(strings[0]);
}
//创建接口
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
callBackS.getDatas(s);
}
public interface CallBackS{
String getDatas(String string);
}
private CallBackS callBackS;
public void setCallBackS(CallBackS callBackS) {
this.callBackS = callBackS;
}
}
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//配置属性
DisplayImageOptions options = new DisplayImageOptions.Builder().build();
//设置imageloader
ImageLoaderConfiguration configuration= new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options).build();//设置配置属性
// 获得实例
ImageLoader imageLoader=ImageLoader.getInstance();
// 初始化
imageLoader.init(configuration);
}
}
=============================
public class Fraglist extends Fragment {
private ListView lv;
private List<JsonBean.ResultBean.DataBean> data;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag1, container, false);
//查找资源ID
lv = view.findViewById(R.id.lv);
new Thread() {
@Override
public void run() {
super.run();
//判断有没有网络
boolean netWorkConnected = Http.isNetWorkConnected(getActivity());
if (netWorkConnected) {
String s = Http.HttpGet("http://apis.juhe.cn/cook/query?key=c6b73f2106e76e9e97e1c12b55d6c8d5&menu=蛋炒饭&rn=10&pn=3");
//把数据传递给主线程
Message message=new Message();
message.what=0;
message.obj=s;
handler.sendMessage(message);
}
}
}.start();
return view;
}
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);
data = jsonBean.getResult().getData();
lv.setAdapter(new MyBaseAdapter(data,getActivity()));
Toast.makeText(getActivity(),""+ data.toString(),Toast.LENGTH_LONG).show();
break;
case 1:
break;
}
}
};
}
/**
-
ListView适配器
*/public class MyBaseAdapter extends BaseAdapter {
private List<JsonBean.ResultBean.DataBean> data;
private Context context;public MyBaseAdapter(List<JsonBean.ResultBean.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; if (convertView==null){ holder=new ViewHolder(); convertView=View.inflate(context,R.layout.listitem,null); holder.textView=convertView.findViewById(R.id.tt); holder.imageView = convertView.findViewById(R.id.image_listitem); convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag(); } holder.textView.setText(data.get(position).getTitle()); //设置图片 ImageLoader.getInstance().displayImage(data.get(position).getAlbums().get(0),holder.imageView); return convertView; } class ViewHolder{ TextView textView; ImageView imageView; }
}
================================
public class Fraggrid extends Fragment implements MyAsyncTask.CallBackS {
private GridView gv;
private List<GridBean.ResultBean.DataBean> data;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag2, container, false);
gv = view.findViewById(R.id.gv);
//请求数据
MyAsyncTask task = new MyAsyncTask();
task.setCallBackS(this);
task.execute("http://apis.juhe.cn/cook/query?key=c6b73f2106e76e9e97e1c12b55d6c8d5&menu=红烧肉&rn=10&pn=3");
return view;
}
@Override
public String getDatas(String string) {
Gson gson=new Gson();
GridBean gridBean=gson.fromJson(string,GridBean.class);
data = gridBean.getResult().getData();
gv.setAdapter(new MyGridBaseAdapter(data,getActivity()));
Toast.makeText(getActivity(),data.toString(),Toast.LENGTH_LONG).show();
return null;
}
}
==========================
/**
* 设置GridView适配器
*/
public class MyGridBaseAdapter extends BaseAdapter {
private List<GridBean.ResultBean.DataBean> data;
private Context context;
public MyGridBaseAdapter(List<GridBean.ResultBean.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;
if (convertView==null){
holder=new ViewHolder();
convertView=View.inflate(context,R.layout.listitem,null);
holder.textView=convertView.findViewById(R.id.tt);
holder.imageView = convertView.findViewById(R.id.image_listitem);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
holder.textView.setText(data.get(position).getTitle());
ImageLoader.getInstance().displayImage(data.get(position).getAlbums().get(0),holder.imageView);
return convertView;
}
class ViewHolder{
TextView textView;
ImageView imageView;
}
}
========================
//代码粘贴可直接使用,自己封装Json解析包
//蛋炒饭网址:http://apis.juhe.cn/cook/query?key=c6b73f2106e76e9e97e1c12b55d6c8d5&menu=蛋炒饭&rn=10&pn=3
//回锅肉网址:http://apis.juhe.cn/cook/query?key=c6b73f2106e76e9e97e1c12b55d6c8d5&menu=红烧肉&rn=10&pn=3
//效果图如下