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;
}