请求网络数据Listview和GridView展示并切换以及微信界面

MainActivity中的代码如下
public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //找控件
    final ViewPager pager=findViewById(R.id.pager);
    final RadioGroup radioGroup=findViewById(R.id.radioGroup1);
     //默认选中第一个
    radioGroup.check(radioGroup.getChildAt(0).getId());
    //设置页面滑动数据
    ArrayList<Fragment> list=new ArrayList<Fragment>();
    list.add(new Fraglistview());
    list.add(new Fraggridview());
 //设置适配器
    pager.setAdapter(new MyFragAdapter(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.radio0:
findViewById(R.id.radio0).setBackgroundColor(Color.BLUE);
findViewById(R.id.radio1).setBackgroundColor(Color.GREEN);
pager.setCurrentItem(0);
break;
case R.id.radio1:
findViewById(R.id.radio0).setBackgroundColor(Color.GREEN);
findViewById(R.id.radio1).setBackgroundColor(Color.BLUE);
pager.setCurrentItem(1);
break;
}
}
});
}
}
//设置MyFragAdapter 适配器
public class MyFragAdapter extends FragmentPagerAdapter {
private ArrayList list;

public MyFragAdapter(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();
}

}
//设置MyAdapter适配器代码如下
//在getview中进行优化处理
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder =null;
if (convertView==null){
convertView=LayoutInflater.from(context).inflate(R.layout.item,null);
holder = new ViewHolder();
holder.name=convertView.findViewById(R.id.name);
holder.ima=convertView.findViewById(R.id.ima);
convertView.setTag(holder);
}else {
holder= (ViewHolder) convertView.getTag();
}
JsonListBean.ResultBean resultBean= list.get(position);
holder.name.setText(resultBean.getName());
ImageLoader.getInstance().displayImage(resultBean.getPic_s444(),holder.ima);
return convertView;
}
class ViewHolder{
TextView name;
ImageView ima;

}
// 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();
                  //请求数据
           boolean networkConnected = Http.isNetworkConnected(getActivity());
           if (networkConnected){
    
          String s= Http.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);
           }else {
               handler.sendEmptyMessageDelayed(0,1);
           }
       }
   }.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;
            case 1:
                Toast.makeText(getActivity(),"没网",Toast.LENGTH_SHORT).show();
                break;
        }
    }
};

}
//App继承Application
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//配置属性
DisplayImageOptions options=new DisplayImageOptions.Builder().build();
//设置imageloader
ImageLoaderConfiguration loader=new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(options).build();
// 获得实例
ImageLoader imageLoader=ImageLoader.getInstance();
// 初始化
imageLoader.init(loader);

}

}
//Http
public class Http {
public static String requestHttpGet(String strUrl) {

    try {
        //设置url
        URL url=new URL(strUrl);
        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 httpImageBitmap(String string){
try {
URL url=new URL(string);
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
connection.setRequestMethod(“GET”);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int code=connection.getResponseCode();
//获取请求码 一般情况下200是成功
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) {

    try {
        URL url = new URL(str1);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
            //使用写入和读取(post请求必须要写这两个)
        connection.setDoOutput(true);
        connection.setDoInput(true);
       PrintWriter writer=new PrintWriter(connection.getOutputStream());
       writer.write(str2);
       //刷新
       writer.flush();
       
        //判断是否成功
        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 s = "";
            while ((s = reader.readLine()) != null) {
                builder.append(s);
            }
            return builder.toString();
        }
        connection.disconnect();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

//判断网络
public static boolean isNetworkConnected(Context context){
if (context!=null){
ConnectivityManager mconnectivityManager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info;
info = mconnectivityManager.getActiveNetworkInfo();
if (info!=null){
return info.isAvailable();
}
}
return false;
}
}
// MyAsyncTask中代码如下
public class MyAsyncTask extends AsyncTask<String ,Void,String> {
//必须重写 doInBackground和onPostExecute
@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;

//设置set方法
public void setCallbacks(Callbacks callbacks) {
this.callbacks = callbacks;
}
}
//Fraggridview中实现代码如下
public class Fraggridview extends Fragment implements MyAysncTask.CallBackS{

private GridView gridView;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fraglgridview,container,false);
    gridView = view.findViewById(R.id.gridview);
    //请求数据
    MyAysncTask task=new MyAysncTask();
    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();
  
     gridView.setAdapter(new MyAdapter(list,getActivity()));

    Toast.makeText(getActivity(),string,Toast.LENGTH_SHORT).show();
    return null;
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44258714/article/details/85344165