week3_03

public class HttpUtils {
    public static String getFromHttp(String urlString) {
        String result = "";
        try {
            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000);
            connection.setDoInput(true);
            connection.setDoOutput(false);
            connection.setUseCaches(false);

            connection.connect();

            if (connection.getResponseCode() == 200) {
                InputStream is = connection.getInputStream();
                result = getStringFromInputStream(is);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


        return result;
    }

    private static String getStringFromInputStream(InputStream is) {
        String result = "";
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int length = -1;
            byte[] buffer = new byte[1024];
            while ((length = is.read(buffer, 0, buffer.length))!=-1) {
                baos.write(buffer, 0 ,length);
                baos.flush();
            }
            result  = baos.toString();
            baos.close();
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
}

public class BannerAdapter extends BaseAdapter {
    private Context context;
    private List<Banner.BodyBean.ResultBean> list;

    public BannerAdapter(Context context, List<Banner.BodyBean.ResultBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = View.inflate(context, R.layout.item_news_01, null);
            holder.imgLogo1 = convertView.findViewById(R.id.img_logo);
            holder.txtTitle = convertView.findViewById(R.id.txt_title);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txtTitle.setText(list.get(position).getBarnerName());
        ImageLoader.getInstance().displayImage(list.get(position).getBarnerPic(),
                holder.imgLogo1);
        return convertView;
    }

    class ViewHolder {
        ImageView imgLogo1;
        TextView txtTitle;
    }
}

public class NewsAdapter extends BaseAdapter {
    private Context context;
    private List<News.ResultBean.DataBean> list;

    private static final int TYPE_ONE_PIC = 0;
    private static final int TYPE_THREE_PIC = 1;

    public NewsAdapter(Context context, List<News.ResultBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        News.ResultBean.DataBean bean = list.get(position);
        if (!TextUtils.isEmpty(bean.getThumbnail03())) {
            return TYPE_THREE_PIC;
        } else {
            return TYPE_ONE_PIC;
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int type = getItemViewType(position);

        ViewHolder1 holder1 = null;
        ViewHolder3 holder3 = null;

        switch (type) {
            case TYPE_ONE_PIC:
                if (convertView == null) {
                    holder1 = new ViewHolder1();
                    convertView = View.inflate(context, R.layout.item_news_01, null);
                    holder1.imgLogo1 = convertView.findViewById(R.id.img_logo);
                    holder1.txtTitle = convertView.findViewById(R.id.txt_title);
                    convertView.setTag(holder1);
                } else {
                    holder1 = (ViewHolder1) convertView.getTag();
                }

                holder1.txtTitle.setText(list.get(position).getTitle());
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail01(),
                        holder1.imgLogo1);
                break;
            case TYPE_THREE_PIC:
                if (convertView == null) {
                    holder3 = new ViewHolder3();
                    convertView = View.inflate(context, R.layout.item_news_03, null);
                    holder3.imgLogo1 = convertView.findViewById(R.id.img_logo1);
                    holder3.imgLogo2 = convertView.findViewById(R.id.img_logo2);
                    holder3.imgLogo3 = convertView.findViewById(R.id.img_logo3);
                    holder3.txtTitle = convertView.findViewById(R.id.txt_title);
                    convertView.setTag(holder3);
                } else {
                    holder3 = (ViewHolder3) convertView.getTag();
                }

                holder3.txtTitle.setText(list.get(position).getTitle());
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail01(),
                        holder3.imgLogo1);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail02(),
                        holder3.imgLogo2);
                ImageLoader.getInstance().displayImage(list.get(position).getThumbnail03(),
                        holder3.imgLogo3);
                break;
        }
        return convertView;
    }

    class ViewHolder1 {
        ImageView imgLogo1;
        TextView txtTitle;
    }

    class ViewHolder3 {
        ImageView imgLogo1;
        ImageView imgLogo2;
        ImageView imgLogo3;
        TextView txtTitle;
    }

}

public class ServerUrl {
    /**
     * 第一页的URL
     */
    public static final String FRAGMENT_URL_01 = "http://172.17.8.100/mobile/exam/findNewList";
    /**
     * 第二页的URL
     */
    public static final String FRAGMENT_URL_02 = "https://api.yunxuekeji.cn/yunxue_app_api/content/getIndexBanner/";


}

public abstract class BaseActivity extends AppCompatActivity {

    protected Intent intent;
    protected Bundle bundle;
    protected Context mContext;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        previewAction();
        setContentView(getContentView());
        mContext = this;
        intent = getIntent();
        if (intent != null) {
            bundle = intent.getExtras();
        }

        initView();
        initData();
        setListener();
        setMoreAction();
    }

    protected void previewAction() {

    }

    protected abstract int getContentView();

    protected abstract void initView();

    protected void initData() {

    }

    protected void setListener() {

    }

    protected void setMoreAction() {

    }


    public void startActivity(Class<?> clazz) {
        intent = new Intent(mContext, clazz);
        startActivity(intent);
    }

    public void startActivity(Class<?> clazz, Bundle bundle) {
        intent = new Intent(mContext, clazz);
        intent.putExtras(bundle);
        startActivity(intent);
    }
}

public class BaseApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
                .build();
        ImageLoader.getInstance().init(configuration);
    }
}

public abstract class BaseFragment extends Fragment {
    protected Intent intent;
    protected Bundle bundle;
    protected Activity mContext;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(getContentView(), container, false);
        initView(v);
        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mContext = getActivity();
        intent = mContext.getIntent();
        if (intent != null) {
            bundle = intent.getExtras();
        }

        initData();
        setListener();
        setMoreAction();
    }

    protected abstract int getContentView();

    protected abstract void initView(View v);

    protected void initData() {

    }

    protected void setListener() {

    }

    protected void setMoreAction() {

    }

    public void startActivity(Class<?> clazz) {
        intent = new Intent(mContext, clazz);
        startActivity(intent);
    }

    public void startActivity(Class<?> clazz, Bundle bundle) {
        intent = new Intent(mContext, clazz);
        intent.putExtras(bundle);
        startActivity(intent);
    }
}

public class MutilListFragment extends BaseFragment {
    private ListView mlvData;
    private List<News.ResultBean.DataBean> list;
    private NewsAdapter adapter;

    @Override
    protected int getContentView() {
        return R.layout.fragment_multi_list;
    }

    @Override
    protected void initView(View v) {
        mlvData = v.findViewById(R.id.mlv_data);
    }

    @Override
    protected void initData() {
        super.initData();
        list = new ArrayList<>();
        adapter = new NewsAdapter(mContext, list);
        mlvData.setAdapter(adapter);
    }

    @Override
    protected void setListener() {
        super.setListener();

        mlvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                News.ResultBean.DataBean dataBean = list.get(position);

                ArrayList<String> imgs = new ArrayList<>();
                if (!TextUtils.isEmpty(dataBean.getThumbnail01())) {
                    imgs.add(dataBean.getThumbnail01());
                }
                if (!TextUtils.isEmpty(dataBean.getThumbnail02())) {
                    imgs.add(dataBean.getThumbnail02());
                }
                if (!TextUtils.isEmpty(dataBean.getThumbnail03())) {
                    imgs.add(dataBean.getThumbnail03());
                }

                bundle = new Bundle();
                bundle.putStringArrayList("imgs", imgs);
                bundle.putString("url", dataBean.getUrl());
                startActivity(WebActivity.class, bundle);
            }
        });
    }

    @Override
    protected void setMoreAction() {
        super.setMoreAction();

        getData();
    }

    private void getData() {
        new AsyncTask<String, Integer, String>() {

            @Override
            protected String doInBackground(String... strings) {
                return HttpUtils.getFromHttp(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);

                Gson gson = new Gson();
                News news = gson.fromJson(s, News.class);
                if (news != null) {
                    News.ResultBean result = news.getResult();
                    if (result != null) {
                        List<News.ResultBean.DataBean> data = result.getData();
                        if (data != null) {
                            list.clear();
                            list.addAll(data);
                            adapter.notifyDataSetChanged();
                        }
                    }
                }
            }
        }.execute(ServerUrl.FRAGMENT_URL_01);
    }
}

public class XListFragment extends BaseFragment {
    private XListView xlvData;

    private List<Banner.BodyBean.ResultBean> list;
    private BannerAdapter adapter;

    private boolean isLoadMore = false;
    private int page = 1;

    private Handler handler = new Handler();

    @Override
    protected int getContentView() {
        return R.layout.fragment_xlist;
    }

    @Override
    protected void initView(View v) {
        xlvData = v.findViewById(R.id.xlv_data);
    }

    @Override
    protected void initData() {
        super.initData();
        xlvData.setPullRefreshEnable(true);
        xlvData.setPullLoadEnable(true);

        list = new ArrayList<>();
        adapter = new BannerAdapter(mContext, list);
        xlvData.setAdapter(adapter);
    }

    @Override
    protected void setListener() {
        super.setListener();
        xlvData.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                page = 1;
                isLoadMore = false;
                getData();
                stopRefresh();
            }

            @Override
            public void onLoadMore() {
                page++;
                isLoadMore = true;
                getData();
                stopRefresh();
            }
        });

    }

    private void stopRefresh() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (isLoadMore) {
                    xlvData.stopLoadMore();
                } else {
                    xlvData.stopRefresh();
                }
            }
        }, 2000);
    }

    @Override
    protected void setMoreAction() {
        super.setMoreAction();
        getData();
    }

    private void getData() {
        new AsyncTask<String, Integer, String>() {

            @Override
            protected String doInBackground(String... strings) {
                return HttpUtils.getFromHttp(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);

                Gson gson = new Gson();
                Banner banner = gson.fromJson(s, Banner.class);
                if (banner != null) {
                    Banner.BodyBean body = banner.getBody();
                    if (body != null) {
                        List<Banner.BodyBean.ResultBean> result = body.getResult();
                        if (result != null) {
                            if (!isLoadMore) {
                                list.clear();
                            }
                            list.addAll(result);
                            adapter.notifyDataSetChanged();
                        }
                    }
                }
            }
        }.execute(ServerUrl.FRAGMENT_URL_02 + page);
    }
}

public class MainActivity extends BaseActivity {
    public static final int FLAG = 123;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case FLAG:
                    startActivity(HomeActivity.class);
                    break;
            }
        }
    };


    @Override
    protected int getContentView() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {

    }

    @Override
    protected void initData() {
        super.initData();
        Message msg = Message.obtain();
        msg.what = FLAG;
        handler.sendMessageDelayed(msg, 2000);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
    }
}

public class HomeActivity extends BaseActivity {

    private ImageView btnSwitch;
    private MutilListFragment mlvFragment;
    private XListFragment xlvFragment;

    private int page = 0;
    private FragmentManager manager;

    @Override
    protected int getContentView() {
        return R.layout.activity_home;
    }

    @Override
    protected void initView() {
        btnSwitch = findViewById(R.id.btn_switch);
    }

    @Override
    protected void initData() {
        super.initData();

        mlvFragment = new MutilListFragment();
        xlvFragment = new XListFragment();
        manager = getSupportFragmentManager();
        manager.beginTransaction()
                .add(R.id.content, mlvFragment)
                .add(R.id.content, xlvFragment)
                .hide(xlvFragment)
                .commit();
    }

    @Override
    protected void setListener() {
        super.setListener();
        btnSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                page = page == 0 ? 1 : 0;
                // 如果当前是第一页的时候,点击按钮切换到第二页
                if (page == 0) {
                    page = 1;
                    manager.beginTransaction().hide(mlvFragment)
                            .show(xlvFragment).commit();
                } else {
                    // 如果当前是第二页的时候,点击按钮切换成第一页
                    page = 0;
                    manager.beginTransaction().hide(xlvFragment)
                            .show(mlvFragment).commit();
                }
            }
        });
    }
}

public class WebActivity extends BaseActivity {
    private ViewPager vpBanner;
    private WebView wv;
    private ArrayList<String> imgs;
    private String url;

    @Override
    protected int getContentView() {
        return R.layout.activity_web;
    }

    @Override
    protected void initView() {
        vpBanner = findViewById(R.id.vp_banner);
        wv = findViewById(R.id.wv);
    }

    @Override
    protected void initData() {
        super.initData();

        if (bundle == null) {
            return;
        }
        imgs = bundle.getStringArrayList("imgs");
        url = bundle.getString("url");

        vpBanner.setAdapter(new PagerAdapter() {
            @Override
            public int getCount() {
                return imgs.size();
            }

            @Override
            public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
                return view == object;
            }

            @NonNull
            @Override
            public Object instantiateItem(@NonNull ViewGroup container, int position) {
                ImageView img = new ImageView(mContext);
                ImageLoader.getInstance().displayImage(imgs.get(position), img);

                container.addView(img);
                return img;
            }

            @Override
            public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
                container.removeView((View) object);
            }
        });

        wv.loadUrl(url);
        wv.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                return super.shouldOverrideUrlLoading(view, request);
            }
        });
    }
}
 

猜你喜欢

转载自blog.csdn.net/qq_41880220/article/details/82731885