week0101

public class HttpUtils {

    /**
     * 使用HttpUrlConnection做Get请求
     *
     * @param urlString
     * @return
     */
    public static String getFromHttpUrlConnection(String urlString) {
        String result = "";
        try {
            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setDoInput(true);
            connection.setDoOutput(false);
            connection.setUseCaches(false);
            connection.setConnectTimeout(3000);
            connection.connect();

            int code = connection.getResponseCode();
            if (code == 200) {
                InputStream is = connection.getInputStream();
                result = getStringFromInputStream(is);
            }


        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }


    /**
     * 使用HttpClient做Get请求
     *
     * @param urlString
     * @return
     */
    public static String getFromHttpClient(String urlString) {
        String result = "";
        HttpClient client = new DefaultHttpClient();

        HttpGet httpGet = new HttpGet(urlString);

        try {
            HttpResponse response = client.execute(httpGet);

            int code = response.getStatusLine().getStatusCode();
            if (code == 200) {
                InputStream is = response.getEntity().getContent();
                result = getStringFromInputStream(is);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 从输入流中获取一个字符串
     *
     * @param is
     * @return
     */
    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 CategoryAdapter extends BaseAdapter {
    private Context context;
    private List<Category.DataBean> list;

    public CategoryAdapter(Context context, List<Category.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 View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = View.inflate(context, R.layout.item_category, null);
            holder.txtName = convertView.findViewById(R.id.txt_name);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.txtName.setText(list.get(position).getName());
        return convertView;
    }

    class ViewHolder {
        TextView txtName;
    }
}

public class JokeAdapter extends BaseAdapter {
    private Context context;
    private List<Joke.DataBean> list;

    public JokeAdapter(Context context, List<Joke.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 View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = View.inflate(context, R.layout.item_joke, null);
            holder.txtTitle = convertView.findViewById(R.id.txt_title);
            holder.txtTime = convertView.findViewById(R.id.txt_time);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.txtTitle.setText(list.get(position).getContent());
        holder.txtTime.setText(list.get(position).getCreateTime());
        return convertView;
    }

    class ViewHolder {
        TextView txtTitle;
        TextView txtTime;

    }
}
 

public class HClientFragment extends Fragment {
    private static final String URL = "http://120.27.23.105/product/getProductCatagory?cid=1";
    private ListView lvData;
    private List<Category.DataBean> list;
    private CategoryAdapter adapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_item, container, false);
        lvData = v.findViewById(R.id.lv_data);
        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        list = new ArrayList<>();
        adapter = new CategoryAdapter(getActivity(), list);
        lvData.setAdapter(adapter);

        new AsyncTask<String, Integer, String>() {

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

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if (!TextUtils.isEmpty(s)) {
                    Gson gson = new Gson();
                    Category category = gson.fromJson(s, Category.class);
                    list.clear();
                    list.addAll(category.getData());
                    adapter.notifyDataSetChanged();
                }
            }
        }.execute(URL);
    }
}

public class HUCFragment extends Fragment {
    public static final int FLAG = 111;
    private ListView lvData;
    private List<Joke.DataBean> list;
    private JokeAdapter adapter;

    private static final String URL = "https://www.zhaoapi.cn/quarter/getJokes?source=android&appVersion=101";

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case FLAG:
                    String result = (String) msg.obj;
                    if (!TextUtils.isEmpty(result)) {
                        Gson gson = new Gson();
                        Joke joke = gson.fromJson(result, Joke.class);
                        list.clear();
                        list.addAll(joke.getData());
                        adapter.notifyDataSetChanged();
                    }
                    break;
            }
        }
    };

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_item, container, false);
        lvData = v.findViewById(R.id.lv_data);
        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        list = new ArrayList<>();
        adapter = new JokeAdapter(getActivity(), list);
        lvData.setAdapter(adapter);

        new Thread(new Runnable() {
            @Override
            public void run() {
                String result = HttpUtils.getFromHttpUrlConnection(URL);
                Message msg = Message.obtain();
                msg.what = FLAG;
                msg.obj = result;
                handler.sendMessage(msg);

            }
        }).start();

    }
}
 

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView txtHttpUtlConnection;
    private TextView txtHttpClient;

    private HUCFragment hucFragment;
    private HClientFragment hClientFragment;
    private FragmentManager manager;

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

        txtHttpUtlConnection = findViewById(R.id.txt_httpurlconnection);
        txtHttpClient = findViewById(R.id.txt_httpclient);


        hucFragment = new HUCFragment();
        hClientFragment = new HClientFragment();

        manager = getSupportFragmentManager();
        // 添加两个Fragment
        manager.beginTransaction()
                .add(R.id.content, hucFragment)
                .add(R.id.content, hClientFragment)
                .hide(hClientFragment)
                .commit();

        txtHttpUtlConnection.setOnClickListener(this);
        txtHttpClient.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.txt_httpurlconnection:
                manager.beginTransaction().show(hucFragment)
                        .hide(hClientFragment).commit();
                break;
            case R.id.txt_httpclient:
                manager.beginTransaction().hide(hucFragment)
                        .show(hClientFragment).commit();
                break;
        }
    }
}

if (!hasActiviteNetwork()) {
          Toast.makeText(MainActivity.this, "没有可用的网络", Toast.LENGTH_LONG).show();
          startActivity(new Intent(Settings.ACTION_SETTINGS));
          return;
        }


 

猜你喜欢

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