public class NetUtil {
//联网操作
public static boolean isNetworkConnected(Context context) {
if (context != null) {
// 获取网络管理类
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// 获取网络信息类
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
// 如果没有插卡,或wifi没有连接 就获取不到networkinfo
if (networkInfo != null) {
// 返回网络是否可用
return networkInfo.isAvailable();
}
}
return false;
}
//判断网络请求
public static String getDataFromServer(String url){
HttpURLConnection connection = null;
try {
URL url1 = new URL(url);
connection = (HttpURLConnection) url1.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
if(connection.getResponseCode() == 200){
return CharStreams.toString(new InputStreamReader(connection.getInputStream()));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
//联网展示图片
public class ShouYeFragment extends Fragment {
private String server_url=“http://gank.io/api/data/iOS/20/2”;
private View rootView;
private ListView homelist;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_fragment_home,null);
initView();
loadData();
return rootView;
}
//加载数据
private void loadData() {
new LoadDataTask().execute(server_url);
}
private void initView() {
homelist = rootView.findViewById(R.id.home_list);
}
class LoadDataTask extends AsyncTask<String,Void,String>{
@Override
protected void onPostExecute(String s) {
Gson gson = new Gson();
Result result = gson.fromJson(s, Result.class);
homelist.setAdapter(new HomeAdapter(getContext(),result.getResults()));
}
@Override
protected String doInBackground(String... strings) {
return NetUtil.getDataFromServer(strings[0]);
}
}
}
//Adapter
多条目展示
public class HomeAdapter extends BaseAdapter {
private Context context;
private List<Result.ResultsEntity> datas;
private final int ITEM_VIEW_TYPE_ONE = 0;
private final int ITEM_VIEW_TYPE_TWO = 1;
private final int ITEM_VIEW_TYPE_THERE = 2;
private final int ITEM_VIEW_TYPE_COUNT = 4;
public HomeAdapter(Context context, List<Result.ResultsEntity> datas) {
this.context = context;
this.datas = datas;
}
@Override
public int getCount() {
return datas.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) {
//根据position返回条目类型
int viewType = getItemViewType(position);
//判断条目类型 绑定不同的viewholder和布局
switch (viewType) {
case ITEM_VIEW_TYPE_ONE:
ViewHolderOne viewHolderOne = null;
if (convertView == null) {
viewHolderOne = new ViewHolderOne();
convertView = LayoutInflater.from(context).inflate(R.layout.home_list_item_one, null);
viewHolderOne.desc = convertView.findViewById(R.id.tv_desc);
convertView.setTag(viewHolderOne);
} else {
viewHolderOne = (ViewHolderOne) convertView.getTag();
}
viewHolderOne.desc.setText(datas.get(position).getDesc());
break;
case ITEM_VIEW_TYPE_TWO:
ViewHolderTwo viewHolderTwo = null;
if (viewHolderTwo == null) {
viewHolderTwo = new ViewHolderTwo();
convertView = LayoutInflater.from(context).inflate(R.layout.two, null);
viewHolderTwo.desc = convertView.findViewById(R.id.tv_desc);
viewHolderTwo.imageOne = convertView.findViewById(R.id.image_one);
convertView.setTag(viewHolderTwo);
} else {
viewHolderTwo = (ViewHolderTwo) convertView.getTag();
}
viewHolderTwo.desc.setText(datas.get(position).getDesc());
Glide.with(context).load(datas.get(position).getImages().get(0)).into(viewHolderTwo.imageOne);
break;
case ITEM_VIEW_TYPE_THERE:
ViewHolderThree viewHolderThree = null;
if (convertView == null) {
viewHolderThree = new ViewHolderThree();
convertView = LayoutInflater.from(context).inflate(R.layout.three, null);
viewHolderThree.desc = convertView.findViewById(R.id.tv_desc);
viewHolderThree.imageOne = convertView.findViewById(R.id.image_one);
viewHolderThree.imageTwo = convertView.findViewById(R.id.image_two);
convertView.setTag(viewHolderThree);
} else {
viewHolderThree = (ViewHolderThree) convertView.getTag();
}
viewHolderThree.desc.setText(datas.get(position).getDesc());
if (datas.get(position).getImages().equals("") || datas.get(position).getImages().size() == 0) {
} else {
Glide.with(context).load(datas.get(position).getImages().get(0)).into(viewHolderThree.imageOne);
Glide.with(context).load(datas.get(position).getImages().get(1)).into(viewHolderThree.imageTwo);
}
break;
}
return convertView;
}
class ViewHolderOne {
TextView desc;
}
class ViewHolderTwo extends ViewHolderOne {
ImageView imageOne;
}
class ViewHolderThree extends ViewHolderTwo {
ImageView imageTwo;
}
//返回条目视图类型
@Override
public int getItemViewType(int position) {
List<String> images = datas.get(position).getImages();
if (images == null) {
return ITEM_VIEW_TYPE_ONE;
} else if (images.size() == 1) {
return ITEM_VIEW_TYPE_TWO;
} else {
return ITEM_VIEW_TYPE_THERE;
}
}
//返回条目视图类型数量
@Override
public int getViewTypeCount() {
return ITEM_VIEW_TYPE_COUNT;
}
}