package com.bczm.widgetcollections.ui.fragment; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.ScrollView; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.StringRequest; import com.bczm.widgetcollections.R; import com.bczm.widgetcollections.bean.Channel; import com.bczm.widgetcollections.bean.RecommandPositionInfo; import com.bczm.widgetcollections.bean.RecommendAppInfo; import com.bczm.widgetcollections.bean.RecommendedChannel; import com.bczm.widgetcollections.http.ConfigManage; import com.bczm.widgetcollections.http.HttpUtil; import com.bczm.widgetcollections.http.NetUtils; import com.bczm.widgetcollections.http.parse.JsonHelper; import com.bczm.widgetcollections.http.protocol.RecommandTopProtocol; import com.bczm.widgetcollections.http.protocol.RecommendedAppProtocol; import com.bczm.widgetcollections.http.protocol.RecommendedChannelProtocol; import com.bczm.widgetcollections.http.protocol.RecommendedPopProtocol; import com.bczm.widgetcollections.ui.adapter.DefaultAdapter; import com.bczm.widgetcollections.ui.holder.BaseHolder; import com.bczm.widgetcollections.ui.holder.ChannelADHolder; import com.bczm.widgetcollections.ui.holder.ChannelHolder; import com.bczm.widgetcollections.ui.widget.BaseListView; import com.bczm.widgetcollections.ui.widget.LoadingPage.LoadResult; import com.bczm.widgetcollections.ui.widget.MyGridView; import com.bczm.widgetcollections.utils.FileUtils; import com.bczm.widgetcollections.utils.LayoutGenetator; import com.bczm.widgetcollections.utils.LogUtils; import com.bczm.widgetcollections.utils.SharedPreferenceUtils; import com.bczm.widgetcollections.utils.UIUtils; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; import java.util.Map; import butterknife.ButterKnife; /**看漫画 * A simple {@link Fragment} subclass. */ public class TabFirstFragment extends BaseFragment { // 存储顶部轮播图的集合 private ArrayList<RecommandPositionInfo> resultList; private LinearLayout rlView; // 推荐频道的容器 private RecommendedChannel recommendedChannel; // 推荐应用的容器 private List<RecommendAppInfo> appList; private ScrollView scollVoew; @Override protected void initViewsAndEvents() { } @Override protected LoadResult load() { // 顶部轮播 RecommandTopProtocol protocol = new RecommandTopProtocol(); resultList = protocol.load(0); loadData(); return check(resultList); } @Override protected View createLoadedView() { //模拟 评论加载数据 第一次 0 表示有更多 SharedPreferenceUtils.setGetMoreTimes(0); View view= UIUtils.inflate(R.layout.fragment_recommand); // 此时list 已经包含信息 rlView = (LinearLayout) view.findViewById(R.id.rl_view); rlView.setFocusable(false); // 找到 scrollview 在可见的时候 让滑动到顶部 scollVoew = (ScrollView) view.findViewById(R.id.scrollView); //添加viewpager LayoutGenetator.getneratePagerView(resultList, UIUtils.getContext(), rlView); // 添加6个推荐位置 LayoutGenetator.generateRecommendPosition(popList, rlView); //添加 推荐频道 generateRecommendedChannels(recommendedChannel, rlView); // 添加更多频道按钮 LayoutGenetator.genenrateMoreChannels(rlView, R.string.txt_recommend_more, R.mipmap.ic_hot_click); // 添加 应用推荐 模块 LayoutGenetator.generateRecommendedApp(rlView, appList); // 添加更多应用 LayoutGenetator.genenrateMoreChannels(rlView, R.string.txt_recommend_more_app, R.mipmap.ic_like_click); return view; } @Override public void onResume() { super.onResume(); //平滑滑动到顶部 } @Override public void onStart() { super.onStart(); // show(); } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } // 推荐位置 private ArrayList<RecommandPositionInfo> popList=new ArrayList<RecommandPositionInfo>(); public void loadData(){ // 顶部六个 位置 RecommendedPopProtocol popProtocol=new RecommendedPopProtocol(); if(null!=popProtocol.load(0)) popList= popProtocol.load(0); // 推荐频道 RecommendedChannelProtocol recommendedChannelProtocol=new RecommendedChannelProtocol(); recommendedChannel = recommendedChannelProtocol.load(0); // 推荐应用 RecommendedAppProtocol recommendedAppProtocol= new RecommendedAppProtocol(); appList=recommendedAppProtocol.load(0); } /**********************************************适配器 适配数据**************************************************************/ /** * 生成推荐频道 * @param recommendeChannel 推荐频道 item * @param layout_item_container 父容器 */ public void generateRecommendedChannels(RecommendedChannel recommendeChannel,LinearLayout layout_item_container){ List<Channel> list=recommendeChannel.items; BaseListView listView=new BaseListView(UIUtils.getContext()); RelativeLayout.LayoutParams cParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT) ; layout_item_container.addView(listView, cParams); listView.setAdapter(new ChannelAdapter(listView, list)); } private class ChannelAdapter extends DefaultAdapter<Channel>{ private int mCurrentPosition; public ChannelAdapter(AbsListView listView, List<Channel> channels) { super(listView, channels); LogUtils.e(" List<Channel> channels:" + channels.size()); } @Override public boolean hasMore() { return false; } //告诉 有几种布局 @Override public int getViewTypeCount() { return super.getViewTypeCount()+1; } @Override public int getItemViewTypeInner(int position) { Channel channel= getData().get(position); if(channel.contents==null||channel.contents.size()==0){ //广告布局 return super.getItemViewTypeInner(position) + 1; }else{ // 推荐位置布局 return super.getItemViewTypeInner(position) ; } } @Override public View getView(int position, View convertView, ViewGroup parent) { mCurrentPosition = position; return super.getView(position, convertView, parent); } @Override protected BaseHolder getHolder() { Channel channel= getData().get(mCurrentPosition); if(channel.contents==null||channel.contents.size()==0){ //广告布局 return new ChannelADHolder(); }else{ // 推荐位置布局 return new ChannelHolder(); } } } /**********************************************适配器**************************************************************/ }