项目实战周考一:

1.布局:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

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

    </android.support.v4.view.ViewPager>

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/button1"
            android:textSize="25dp"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:layout_marginLeft="20dp"
            android:text="首页"/>
        <RadioButton
            android:id="@+id/button2"
            android:textSize="25dp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:layout_marginLeft="20dp"
            android:text="财富"/>
        <RadioButton
            android:id="@+id/button3"
            android:textSize="25dp"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:layout_marginLeft="20dp"
            android:text="口碑"/>
        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:textSize="25sp"
            android:layout_marginLeft="20dp"
            android:text="朋友"
            />
        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:textSize="25sp"
            android:layout_marginLeft="20dp"
            android:text="我的"
            />
    </RadioGroup>

</LinearLayout>

2.frag01.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00f"
    android:orientation="vertical">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>

3.frag02.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <GridView
        android:id="@+id/gridView"
        android:numColumns="2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></GridView>

</LinearLayout>

4.frag03.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0ff"
    android:orientation="vertical">

</LinearLayout>

5.text.xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

6.在清单文件里写权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name=".app.App"
</application>在加一个android:name=".app.App"不要忘记。

7.在MainActivity里边写:

package com.bawei.qizhuangzhuang20190102;


import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.widget.RadioGroup;

import com.bawei.qizhuangzhuang20190102.adapter.MyFragmentAdapter;
import com.bawei.qizhuangzhuang20190102.frag.Frag_01;
import com.bawei.qizhuangzhuang20190102.frag.Frag_02;
import com.bawei.qizhuangzhuang20190102.frag.Frag_03;

import java.util.ArrayList;


public class MainActivity extends FragmentActivity {



    private ViewPager pager;
    private RadioGroup radio;

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

        pager = findViewById (R.id.pager);
        radio = findViewById (R.id.radioGroup);

        radio.check (radio.getChildAt (0).getId ());

        ArrayList<Fragment> list = new ArrayList<Fragment> ();
        Frag_01 frag_01 = new Frag_01 ();
        Frag_02 frag_02 = new Frag_02 ();
        Frag_03 frag_03 = new Frag_03 ();
        list.add (frag_01);
        list.add (frag_02);
        list.add (frag_03);
        pager.setAdapter (new MyFragmentAdapter(getSupportFragmentManager (),list) );

        pager.addOnPageChangeListener (new ViewPager.OnPageChangeListener () {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                radio.check (radio.getChildAt (i).getId ());
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });

        radio.setOnCheckedChangeListener (new RadioGroup.OnCheckedChangeListener () {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.button1:
                        pager.setCurrentItem (0);
                        break;
                    case R.id.button2:
                        pager.setCurrentItem (1);
                        break;
                    case R.id.button3:
                        pager.setCurrentItem (2);
                        break;
                }
            }
        });

    }

}

8.建一个App类:

package com.bawei.qizhuangzhuang20190102.app;

import android.app.Application;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * @Auther: 祁壮壮
 * @Date: 2019/1/2 14:16:58
 * @Description:
 */
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        DisplayImageOptions options = new DisplayImageOptions.Builder ().build ();

        ImageLoaderConfiguration loader = new ImageLoaderConfiguration.Builder (this).defaultDisplayImageOptions (options).build ();

        ImageLoader imageLoader = ImageLoader.getInstance();
        imageLoader.init(loader);
    }
}

9.在建一个Http类:

package com.bawei.qizhuangzhuang20190102.http;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

/**
 * @Auther: 祁壮壮
 * @Date: 2019/1/2 10:28:49
 * @Description:
 */
public class Http {
    public static boolean isNetWorkConnected(Context context) {
        //判断网络
        if (context != null) {
            ConnectivityManager myConnectivityManager = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);

            NetworkInfo info = myConnectivityManager.getActiveNetworkInfo ();
            if(info!=null){
                return info.isAvailable ();
            }
        }
        return false;
    }
    public static String requestHttpGet(String strUrl){
        try {
            URL url=new URL (strUrl);

            //获取HttpURLConnection
            HttpURLConnection connection =(HttpURLConnection)url.openConnection ();

            connection.setRequestMethod ("GET");

            connection.setConnectTimeout (5000);
            connection.setReadTimeout (5000);

            int code = connection.getResponseCode ();
            if(code == HttpURLConnection.HTTP_OK){
                InputStream stream = connection.getInputStream ();

                BufferedReader reader = new BufferedReader (new InputStreamReader (stream,"utf-8"));
                StringBuilder builder = new StringBuilder ();

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

}

10.建一个Frag_01类:代码如下:

package com.bawei.qizhuangzhuang20190102.frag;

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 android.widget.Toast;

import com.bawei.qizhuangzhuang20190102.R;
import com.bawei.qizhuangzhuang20190102.adapter.MyAdapter;
import com.bawei.qizhuangzhuang20190102.bean.JsonBean;
import com.bawei.qizhuangzhuang20190102.http.Http;
import com.google.gson.Gson;

import java.util.List;

/**
 * @Auther: 祁壮壮
 * @Date: 2019/1/2 14:28:27
 * @Description:
 */
public class Frag_01 extends Fragment {
    private ListView listView;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.frag01,container,false);

         listView = view.findViewById(R.id.listView);

         new Thread(){
             @Override
             public void run() {
                 super.run();
                 boolean netWorkConnected = Http.isNetWorkConnected(getActivity());
                 if (netWorkConnected){
                     String s = Http.requestHttpGet("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");

                     Gson gson = new Gson();
                     JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
                     List<JsonBean.DataBean> list = jsonBean.getData();

                     Message message = new Message();
                     message.what = 0;
                     message.obj = list;
                     handler.sendMessage(message);
                 }else {
                     handler.sendEmptyMessageDelayed(1,0);
                 }
             }
         }.start();
        return view;
    }
    Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case 0:
                List<JsonBean.DataBean> list =(List<JsonBean.DataBean>) msg.obj;
                listView.setAdapter(new MyAdapter(list,getActivity()));
                break;
            case 1:
                Toast.makeText(getActivity(),"没网",Toast.LENGTH_SHORT).show();
                break;
        }
    }
};
}

11.建第二个Frag_02,代码如下:

package com.bawei.qizhuangzhuang20190102.frag;

import android.os.Bundle;
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 com.bawei.qizhuangzhuang20190102.R;
import com.bawei.qizhuangzhuang20190102.adapter.MyAdapter;
import com.bawei.qizhuangzhuang20190102.adapter.MyAsyncTask;
import com.bawei.qizhuangzhuang20190102.bean.JsonBean;
import com.google.gson.Gson;

import java.util.List;

/**
 * @Auther: 祁壮壮
 * @Date: 2019/1/2 14:36:44
 * @Description:
 */
public class Frag_02 extends Fragment implements MyAsyncTask.Callbacks {

    private GridView grid;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.frag02,container,false);

         grid = view.findViewById(R.id.gridView);
         //请求数据
        MyAsyncTask task = new MyAsyncTask();
        task.setCallbacks(this);
        task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
        return view;
    }

    @Override
    public String getData(String string) {
        Gson gson = new Gson();
        JsonBean jsonBean = gson.fromJson(string, JsonBean.class);
        List<JsonBean.DataBean> list = jsonBean.getData();
        grid.setAdapter(new MyAdapter(list,getActivity()));
        return null;
    }
}

12.建个适配器类:MainActivity里边的适配器:

package com.bawei.qizhuangzhuang20190102.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

/**
 * @Auther: 祁壮壮
 * @Date: 2019/1/2 14:48:41
 * @Description:
 */
public class MyFragmentAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> list;
    public MyFragmentAdapter(FragmentManager fm,ArrayList<Fragment> list){
        super(fm);
        this.list = list;
    }

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

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

13.listview跟GridView适配器:

package com.bawei.qizhuangzhuang20190102.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bawei.qizhuangzhuang20190102.R;
import com.bawei.qizhuangzhuang20190102.bean.JsonBean;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * @Auther: lenovo
 * @Date: 2019/1/2 16:25:43
 * @Description:
 */
public class MyAdapter extends BaseAdapter {

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

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

    @Override
    public int getCount() {
        return list.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) {
        ViewHolder holder = null;
        if (convertView == null){
            convertView = View.inflate(context, R.layout.text,null);
            holder = new ViewHolder();
            holder.text = convertView.findViewById(R.id.text);
            holder.image = convertView.findViewById(R.id.image);
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder)convertView.getTag();
        }
        JsonBean.DataBean dataBean = list.get(position);
        holder.text.setText(dataBean.getNews_summary());
        ImageLoader.getInstance().displayImage(dataBean.getPic_url(),holder.image);
        return convertView;
    }
    class ViewHolder{
        TextView text;
        ImageView image;
    }
}

14.建一个MyAsyncTask类:

package com.bawei.qizhuangzhuang20190102.adapter;

import android.os.AsyncTask;

import com.bawei.qizhuangzhuang20190102.http.Http;

/**
 * @Auther: 祁壮壮
 * @Date: 2019/1/2 16:26:12
 * @Description:
 */
public class MyAsyncTask extends AsyncTask<String,Void,String> {
    @Override
    protected String doInBackground(String... strings) {
        return Http.requestHttpGet(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        callbacks.getData(s);
    }
    public interface Callbacks{
        String getData(String string);
    }
    private Callbacks callbacks;

    public void setCallbacks(Callbacks callbacks){
        this.callbacks = callbacks;
    }
}

15.最后在写个bean类。

猜你喜欢

转载自blog.csdn.net/qq_42436644/article/details/85635051