二周综合

一 布局

<android.support.v4.widget.DrawerLayout
        android:id="@+id/draw"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!--主界面-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <android.support.v4.view.ViewPager
                android:id="@+id/pager"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"/>

            <android.support.design.widget.TabLayout
                android:id="@+id/tab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"></android.support.design.widget.TabLayout>
        </LinearLayout>
        <!--=========================分割线==================================-->
        <!--侧滑界面-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:background="#ded3d3"
            android:orientation="horizontal">

            <com.qy.xlistview.XListView
                android:id="@+id/xlist"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">        </com.qy.xlistview.XListView>
        </LinearLayout>

    </android.support.v4.widget.DrawerLayout>

二 MainActivity

public class MainActivity extends AppCompatActivity {

    private DrawerLayout draw;
    private Button button;
    private ViewPager pager;
    private TabLayout tab;
    private XListView xlist;
    private String url = "https://www.apiopen.top/meituApi?page=1";
    private List<JsonBean.DataBean> data;
    private XAdapter xAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);

        pager = findViewById (R.id.pager);
        draw = findViewById (R.id.draw);
        tab = findViewById (R.id.tab);

        xlist = findViewById (R.id.xlist);
        ArrayList<Fragment> list = new ArrayList<> ();
        list.add (new Frag01());
        list.add (new Frag02());

        String str[]={"首页","我的"};
        MypagerAdapter mypagerAdapter =new MypagerAdapter (getSupportFragmentManager (),list,str);

        pager.setAdapter (mypagerAdapter);

        tab.setupWithViewPager (pager);
        xlist.setXListViewListener (new XListView.IXListViewListener () {
            @Override
            public void onRefresh() {
                HttpUtil.getAsyncTask (url, new HttpUtil.CallBackA () {
                    @Override
                    public void getData(String s) {
                        Gson gson = new Gson ();
                        JsonBean bean = gson.fromJson (s, JsonBean.class);
                        data = bean.getData ();

                        xAdapter = new XAdapter (MainActivity.this, data);
                        xlist.setAdapter (xAdapter);
                        xlist.stopRefresh ();
                    }
                });
            }

            @Override
            public void onLoadMore() {
                HttpUtil.getAsyncTask (url, new HttpUtil.CallBackA () {
                    @Override
                    public void getData(String s) {
                        Gson gson = new Gson ();
                        JsonBean bean = gson.fromJson (s, JsonBean.class);
                        List<JsonBean.DataBean> list2 = bean.getData ();
                        data.addAll (list2);
                        xAdapter.notifyDataSetChanged ();
                        xlist.stopLoadMore ();
                    }
                });

            }
        });
        HttpUtil.getAsyncTask (url, new HttpUtil.CallBackA () {
            @Override
            public void getData(String s) {
                Gson gson = new Gson ();
                JsonBean bean = gson.fromJson (s, JsonBean.class);
                List<JsonBean.DataBean> data = bean.getData ();
                xAdapter = new XAdapter (MainActivity.this, data);
                xlist.setAdapter (xAdapter);
            }
        });
    }
}

三 HttpUtil

public class HttpUtil {

    public interface CallBackA{
        void getData(String s);
    }
    public static void getAsyncTask(String url, final CallBackA backA){
        new AsyncTask<String, Void, String> () {
            @Override
            protected String doInBackground(String... strings) {
                return httpGet (strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute (s);
                backA.getData (s);
            }
        }.execute (url);
    }
    public static boolean isNetworkConnected(Context context){

        if(context!=null){
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo ();
            if(networkInfo!=null){

               return networkInfo.isAvailable ();
            }
        }
        return false;
    }
    public static  String httpGet(String strUrl){
        try {
            URL url = new URL (strUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection ();

            connection.setRequestMethod ("GET");
            connection.setReadTimeout (5000);
            connection.setConnectTimeout (5000);


            InputStream stream = connection.getInputStream ();
            BufferedReader reader = new BufferedReader (new InputStreamReader (stream));

            StringBuilder builder = new StringBuilder ();
            String str="";
            while ((str = reader.readLine ())!=null){
                builder.append (str);
            }
            connection.disconnect ();
            return builder.toString ();
        } catch (Exception e) {
            e.printStackTrace ();
        }
        return null;
    }
}

四 Frag01

public class Frag01 extends Fragment {

    private XListView xlist;
    private XAdapter adapter;
    private String url = "https://www.apiopen.top/meituApi?page=1";
    private List<JsonBean.DataBean> data;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate (R.layout.frag01, container, false);
        xlist = view.findViewById (R.id.xlist);
        xlist.setPullLoadEnable (true);
        //设置上拉和下拉
        xlist.setXListViewListener (new XListView.IXListViewListener () {
            @Override
            public void onRefresh() {
                HttpUtil.getAsyncTask (url, new HttpUtil.CallBackA () {

                    @Override
                    public void getData(String s) {
                       Gson gson = new Gson();
                        JsonBean bean = gson.fromJson (s, JsonBean.class);
                        data = bean.getData ();

                      XAdapter adapter = new XAdapter (getActivity (), data);
                        xlist.setAdapter (adapter);
                        xlist.stopRefresh ();
                    }
                });
            }

            @Override
            public void onLoadMore() {
               HttpUtil.getAsyncTask (url, new HttpUtil.CallBackA () {
                   @Override
                   public void getData(String s) {
                       Gson gson = new Gson();
                       JsonBean bean = gson.fromJson (s, JsonBean.class);
                       List<JsonBean.DataBean> data1 = bean.getData ();
                       data.addAll (data1);
                       adapter.notifyDataSetChanged ();
                       xlist.stopLoadMore ();
                   }
               }); 
            }
        });

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated (savedInstanceState);
        HttpUtil.getAsyncTask (url, new HttpUtil.CallBackA () {
            @Override
            public void getData(String s) {
                Gson gson = new Gson();
                JsonBean bean = gson.fromJson (s, JsonBean.class);
                List<JsonBean.DataBean> data = bean.getData ();

                adapter = new XAdapter (getActivity (), data);
                xlist.setAdapter (adapter);
            }
        });
    }
}

五 XAdapter

ublic class XAdapter extends BaseAdapter {

    private Context context;
    private List<JsonBean.DataBean> data;

    public XAdapter(Context context, List<JsonBean.DataBean> data) {
        this.context = context;
        this.data = data;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int type = getItemViewType (position);
        switch (type){
            case 0:
                ViewHolder0 holder0 = null;
                if(convertView == null) {
                    convertView = View.inflate (context, R.layout.item, null);
                    holder0 = new ViewHolder0 ();
                    holder0.text0 = convertView.findViewById (R.id.text1);
                    convertView.setTag (holder0);
                }else{
                    holder0 = (ViewHolder0) convertView.getTag ();
                }
                JsonBean.DataBean bean0 = data.get (position);
                holder0.text0.setText (bean0.getType ());
                break;
            case 1:
                ViewHolder1 holder1 = null;
                if(convertView == null) {
                    convertView = View.inflate (context, R.layout.item1, null);
                    holder1 = new ViewHolder1 ();
                    holder1.text1 = convertView.findViewById (R.id.text1);
                    holder1.image1 = convertView.findViewById (R.id.image1);
                    convertView.setTag (holder1);
                }else{
                    holder1 = (ViewHolder1) convertView.getTag ();
                }
                JsonBean.DataBean bean1 = data.get (position);
                holder1.text1.setText (bean1.getType ());

                Glide.with(context).load("http://n.sinaimg.cn/sports/transform/237/w650h387/20190219/XUgA-htfpvza1481742.png").apply(RequestOptions.bitmapTransform(new CircleCrop ())).into(holder1.image1);
                break;
            case 2:
                ViewHolder2 holder2 = null;
                if(convertView == null) {
                    convertView = View.inflate (context, R.layout.item2, null);
                    holder2 = new ViewHolder2 ();
                    holder2.text2 = convertView.findViewById (R.id.text2);
                    holder2.image2 = convertView.findViewById (R.id.image2);
                    convertView.setTag (holder2);
                }else{
                    holder2 = (ViewHolder2) convertView.getTag ();
                }
                JsonBean.DataBean bean2 = data.get (position);
                holder2.text2.setText (bean2.getType ());
                Glide.with (context).load ("http://e.hiphotos.baidu.com/image/pic/item/a1ec08fa513d2697e542494057fbb2fb4316d81e.jpg").into (holder2.image2);

                break;
        }
        return convertView;
    }

    class ViewHolder0{
        TextView text0;
    }
    class ViewHolder1{
        TextView text1;
        ImageView image1;
    }
    class ViewHolder2{
        TextView text2;
        ImageView image2;
    }
    @Override
    public int getViewTypeCount() {
        return 3;
    }

    @Override
    public int getItemViewType(int position) {
        return position % 3;
    }
}

六 MypagerAdapter

public class MypagerAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> list;
    private String str[];

    public MypagerAdapter(FragmentManager fm, ArrayList<Fragment> list, String[] str) {
        super(fm);
        this.list = list;
        this.str = str;
    }

    @Override
    public Fragment getItem(int i) {
        return list.get(i);
    }

    @Override
    public int getCount() {
        return list.size();
  }
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190225191131689.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI1OTkwOA==,size_16,color_FFFFFF,t_70)

implementation fileTree(include: [’*.jar’], dir: ‘libs’)
implementation ‘com.android.support:appcompat-v7:28.0.0’
implementation ‘com.android.support.constraint:constraint-layout:1.1.3’
testImplementation ‘junit:junit:4.12’
androidTestImplementation ‘com.android.support.test?1.0.2’
androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’
implementation ‘com.google.code.gson:gson:2.8.5’
implementation ‘com.github.bumptech.glide:glide:4.9.0’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值