xiaohaibin / OpenEyes

:fire: 仿【开眼视频】客户端,一款精美的短视频应用

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于MVC结构的问题

ding102992 opened this issue · comments

你在说明里面写了,您的这个项目是采用MVC结构的,举个例子,在CommonfindFragment中:

 //初始化数据
    private void initData() {
        String name = getArguments().getString("name");//分类名称
        int position = getArguments().getInt("position");
        Log.i("====rank", position + "-----" + RANK[position]);
        String rank = RANK[position];
        String encode = URLEncoder.encode(name);//必须将中文进行URL编码才能加到接口中
        String url = String.format(HttpAdress.FIND_DETAIL, encode, rank);//请求地址
        downloadData(url);
    }

    /**
     * 下载网络数据
     *
     * @param url 网络请求地址
     */
    private void downloadData(String url) {

        RequestQueue requestQueue = Volley.newRequestQueue(getContext());
        //下载json数据
        StringRequest request = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                parseJson(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        requestQueue.add(request);
        requestQueue.start();
    }

 //设置适配器
    private void setAdapter(List<FindDetailEntity.ItemListEntity> data) {
        //实例化适配器
        adapter = new CommonAdapter<FindDetailEntity.ItemListEntity>(getContext(), data, R.layout.list_home_vedio_item) {
            @Override
            public void convert(ViewHolder viewHolder, FindDetailEntity.ItemListEntity itemListEntity) {
                viewHolder.setText(R.id.tv_title, itemListEntity.getData().getTitle());
                //获取时间
                int duration = itemListEntity.getData().getDuration();
                int mm = duration / 60;//分
                int ss = duration % 60;//秒
                String second = "";//秒
                String minute = "";//分
                if (ss < 10) {
                    second = "0" + String.valueOf(ss);
                } else {
                    second = String.valueOf(ss);
                }
                if (mm < 10) {
                    minute = "0" + String.valueOf(mm);
                } else {
                    minute = String.valueOf(mm);//分钟
                }
                viewHolder.setText(R.id.tv_time, "#" + itemListEntity.getData().getCategory() + " / " + minute + "'" + second + '"');
                viewHolder.setImageResourcewithFresco(R.id.iv, Uri.parse(itemListEntity.getData().getCover().getFeed()));
            }
        };
        findListview.setAdapter(adapter);
        if (adapter!=null){
            adapter.notifyDataSetChanged();
        }
    }

    //解析数据
    private void parseJson(String response) {
        FindDetailEntity entity = new Gson().fromJson(response, FindDetailEntity.class);
        itemListEntities.addAll(entity.getItemList());
        isLoad = false;//数据下载完之后设置为false
        nextPageUrl = entity.getNextPageUrl();
        //如果下一页数据的请求地址为null,则加载底部布局
        if (nextPageUrl==null){
            findListview.addFooterView(footview, null, false);
        }
        //设置适配器
        setAdapter(itemListEntities);
    }

这上面的一段代码,有设置M的(Volley获取数据),有V的(设置adapter显示数据),有C的(组织数据显示)。

所以,请问,您是如何认为您的项目是实用MVC结构的?