网络请求+Fragment页面滑动+ListView+GridView+ImageLoader

//布局

<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
//效果图如下在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值