AsnyTask

本篇博客详细介绍了在安卓应用中实现分屏显示和Tab页切换的完整过程。通过MainActivity类,我们使用ViewPager和FragmentPagerAdapter实现了多个Fragment之间的平滑切换,并利用RadioGroup来控制ViewPager的当前页面。此外,Fragment1和Fragment2分别展示了如何在网络请求中使用Gson进行数据解析,并将数据展示在ListView和GridView上。

MainActivity

    package yxr.com.week1;
    
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.RadioGroup;
    
    import java.util.ArrayList;
    import java.util.List;
    public class MainActivity extends FragmentActivity {
        private ViewPager viewPager;
        private RadioGroup group;
    
        List<Fragment> list=new ArrayList<>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            viewPager=findViewById(R.id.viewpager);
            group=findViewById(R.id.group);
            list.add(new Fragment1());
            list.add(new Fragment2());
            list.add(new Fragment3());
            //配置适配器
            viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
                @Override
                public Fragment getItem(int i) {
                    return list.get(i);
                }
    
                @Override
                public int getCount() {
                    return list.size();
                }
            });
            group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    switch (checkedId){
                        case R.id.but1:
                            viewPager.setCurrentItem(0);
                            break;
                        case R.id.but2:
                            viewPager.setCurrentItem(1);
                            break;
                        case R.id.but3:
                            viewPager.setCurrentItem(2);
                            break;
                    }
                }
            });
    
        }
    }

Fragment1


package yxr.com.week1;
    
    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.google.gson.Gson;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
    //网络请求,gson解析数据
    public class `Fragment1` extends Fragment {
        public  String urlString="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
        private ListView listView;
         Handler handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                //得到数据
               List<Mbean.DataBean> data = (List<Mbean.DataBean>) msg.obj;
               ListAdapter adapter=new ListAdapter(data,getActivity());
              listView.setAdapter(adapter);
            }
        };
    
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment1, container, false);
            listView=view.findViewById(R.id.listview);
            return view;
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    try {
                        URL url = new URL(urlString);
                        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                        int responseCode = httpURLConnection.getResponseCode();
                        if (responseCode == 200) {
                            InputStream inputStream = httpURLConnection.getInputStream();
                            String s = stramToString(inputStream);
                            //解析
                            Gson gson=new Gson();
                            Mbean mbean = gson.fromJson(s, Mbean.class);
                            //listview使用地结合数据
                            List<Mbean.DataBean> data = mbean.getData();
                            Message msg=Message.obtain();
                            msg.obj=data;
                            handler.sendMessage(msg);
    
                        }
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
    }
        /*
        *将一个流转换字符中
        * */
        public String stramToString(InputStream stream) {
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String timp;
            try {
                while ((timp = reader.readLine()) != null) {
    
                    stringBuilder.append(timp);
    
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            return stringBuilder.toString();
    
        }
    }

Fragment2


package yxr.com.week1;

    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.GridView;
    import android.widget.ListView;
    
    import com.google.gson.Gson;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    //网络请求,gson解析数据
    public class Fragment2 extends Fragment {
        private GridView gridView;
        public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    
        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                //得到数据
                List<Mbean.DataBean> data = (List<Mbean.DataBean>) msg.obj;
                ListAdapter adapter = new ListAdapter(data, getActivity());
                gridView.setAdapter(adapter);
            }
        };
    
    
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment2, container, false);
            gridView = view.findViewById(R.id.gridview);
    
            return view;
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            new Thread() {
                @Override
                public void run() {
                    super.run();
                    try {
                        URL url = new URL(urlString);
                        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                        int responseCode = httpURLConnection.getResponseCode();
                        if (responseCode == 200) {
                            InputStream inputStream = httpURLConnection.getInputStream();
                            String s = stramToString(inputStream);
                            //解析
                            Gson gson = new Gson();
                            Mbean mbean = gson.fromJson(s, Mbean.class);
                            //listview使用地结合数据
                            List<Mbean.DataBean> data = mbean.getData();
                            Message msg = Message.obtain();
                            msg.obj = data;
                            handler.sendMessage(msg);
    
                        }
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
        /*
         *将一个流转换字符中
         * */
    
    
        public String stramToString(InputStream stream) {
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String timp;
            try {
                while ((timp = reader.readLine()) != null) {
    
                    stringBuilder.append(timp);
    
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return stringBuilder.toString();
        }
    
    }

//适配器

    package yxr.com.week1;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.os.Handler;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.List;
    
    public class ListAdapter extends BaseAdapter {
        private List<Mbean.DataBean> data;
        private Context context;
    
        public ListAdapter(List<Mbean.DataBean> data, Context context) {
            this.data = data;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            return data.size();
        }
    
        @Override
        public Object getItem(int position) {
            return data.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = new ViewHolder();
            if (convertView == null) {
                convertView = View.inflate(context, R.layout.list_main, null);
                holder.imag = convertView.findViewById(R.id.imag);
                holder.text = convertView.findViewById(R.id.text);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
    
            }
            holder.text.setText(data.get(position).getNews_title());
            //异步加载图片
            MypicTask mypicTask = new MypicTask(holder.imag);
            mypicTask.execute(data.get(position).getPic_url());
            return convertView;
        }
    
        class ViewHolder {
            ImageView imag;
            TextView text;
        }
    
        class MypicTask extends AsyncTask<String, Void, Bitmap> {
            private ImageView imag;
            public MypicTask(ImageView imag) {
                this.imag = imag;
            }
    
            @Override
            protected Bitmap doInBackground(String... strings) {
                Bitmap bitmap = null;
                try {
                    URL url = new URL(strings[0]);
                    HttpURLConnection httpurlConnection = (HttpURLConnection) url.openConnection();
                    int responseCode = httpurlConnection.getResponseCode();
                    if (responseCode == 200) {
                        InputStream inputStream = httpurlConnection.getInputStream();
                        bitmap = BitmapFactory.decodeStream(inputStream);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return bitmap;
    
            }
    
    
            @Override
            protected void onPostExecute(Bitmap bitmap) {
                super.onPostExecute(bitmap);
                //显示 赋值
                imag.setImageBitmap(bitmap);
            }
        }
    }



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值