public class HttpUtils {
public static String getFromHttp(String urlString) {
String result = "";
try {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setUseCaches(false);
connection.connect();
if (connection.getResponseCode() == 200) {
InputStream is = connection.getInputStream();
result = getStringFromInputStream(is);
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
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 BannerAdapter extends BaseAdapter {
private Context context;
private List<Banner.BodyBean.ResultBean> list;
public BannerAdapter(Context context, List<Banner.BodyBean.ResultBean> 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_news_01, null);
holder.imgLogo1 = convertView.findViewById(R.id.img_logo);
holder.txtTitle = convertView.findViewById(R.id.txt_title);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtTitle.setText(list.get(position).getBarnerName());
ImageLoader.getInstance().displayImage(list.get(position).getBarnerPic(),
holder.imgLogo1);
return convertView;
}
class ViewHolder {
ImageView imgLogo1;
TextView txtTitle;
}
}
public class NewsAdapter extends BaseAdapter {
private Context context;
private List<News.ResultBean.DataBean> list;
private static final int TYPE_ONE_PIC = 0;
private static final int TYPE_THREE_PIC = 1;
public NewsAdapter(Context context, List<News.ResultBean.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 int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
News.ResultBean.DataBean bean = list.get(position);
if (!TextUtils.isEmpty(bean.getThumbnail03())) {
return TYPE_THREE_PIC;
} else {
return TYPE_ONE_PIC;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
ViewHolder1 holder1 = null;
ViewHolder3 holder3 = null;
switch (type) {
case TYPE_ONE_PIC:
if (convertView == null) {
holder1 = new ViewHolder1();
convertView = View.inflate(context, R.layout.item_news_01, null);
holder1.imgLogo1 = convertView.findViewById(R.id.img_logo);
holder1.txtTitle = convertView.findViewById(R.id.txt_title);
convertView.setTag(holder1);
} else {
holder1 = (ViewHolder1) convertView.getTag();
}
holder1.txtTitle.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail01(),
holder1.imgLogo1);
break;
case TYPE_THREE_PIC:
if (convertView == null) {
holder3 = new ViewHolder3();
convertView = View.inflate(context, R.layout.item_news_03, null);
holder3.imgLogo1 = convertView.findViewById(R.id.img_logo1);
holder3.imgLogo2 = convertView.findViewById(R.id.img_logo2);
holder3.imgLogo3 = convertView.findViewById(R.id.img_logo3);
holder3.txtTitle = convertView.findViewById(R.id.txt_title);
convertView.setTag(holder3);
} else {
holder3 = (ViewHolder3) convertView.getTag();
}
holder3.txtTitle.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail01(),
holder3.imgLogo1);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail02(),
holder3.imgLogo2);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail03(),
holder3.imgLogo3);
break;
}
return convertView;
}
class ViewHolder1 {
ImageView imgLogo1;
TextView txtTitle;
}
class ViewHolder3 {
ImageView imgLogo1;
ImageView imgLogo2;
ImageView imgLogo3;
TextView txtTitle;
}
}
public class ServerUrl {
/**
* 第一页的URL
*/
public static final String FRAGMENT_URL_01 = "http://172.17.8.100/mobile/exam/findNewList";
/**
* 第二页的URL
*/
public static final String FRAGMENT_URL_02 = "https://api.yunxuekeji.cn/yunxue_app_api/content/getIndexBanner/";
}
public abstract class BaseActivity extends AppCompatActivity {
protected Intent intent;
protected Bundle bundle;
protected Context mContext;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
previewAction();
setContentView(getContentView());
mContext = this;
intent = getIntent();
if (intent != null) {
bundle = intent.getExtras();
}
initView();
initData();
setListener();
setMoreAction();
}
protected void previewAction() {
}
protected abstract int getContentView();
protected abstract void initView();
protected void initData() {
}
protected void setListener() {
}
protected void setMoreAction() {
}
public void startActivity(Class<?> clazz) {
intent = new Intent(mContext, clazz);
startActivity(intent);
}
public void startActivity(Class<?> clazz, Bundle bundle) {
intent = new Intent(mContext, clazz);
intent.putExtras(bundle);
startActivity(intent);
}
}
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.build();
ImageLoader.getInstance().init(configuration);
}
}
public abstract class BaseFragment extends Fragment {
protected Intent intent;
protected Bundle bundle;
protected Activity mContext;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(getContentView(), container, false);
initView(v);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mContext = getActivity();
intent = mContext.getIntent();
if (intent != null) {
bundle = intent.getExtras();
}
initData();
setListener();
setMoreAction();
}
protected abstract int getContentView();
protected abstract void initView(View v);
protected void initData() {
}
protected void setListener() {
}
protected void setMoreAction() {
}
public void startActivity(Class<?> clazz) {
intent = new Intent(mContext, clazz);
startActivity(intent);
}
public void startActivity(Class<?> clazz, Bundle bundle) {
intent = new Intent(mContext, clazz);
intent.putExtras(bundle);
startActivity(intent);
}
}
public class MutilListFragment extends BaseFragment {
private ListView mlvData;
private List<News.ResultBean.DataBean> list;
private NewsAdapter adapter;
@Override
protected int getContentView() {
return R.layout.fragment_multi_list;
}
@Override
protected void initView(View v) {
mlvData = v.findViewById(R.id.mlv_data);
}
@Override
protected void initData() {
super.initData();
list = new ArrayList<>();
adapter = new NewsAdapter(mContext, list);
mlvData.setAdapter(adapter);
}
@Override
protected void setListener() {
super.setListener();
mlvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
News.ResultBean.DataBean dataBean = list.get(position);
ArrayList<String> imgs = new ArrayList<>();
if (!TextUtils.isEmpty(dataBean.getThumbnail01())) {
imgs.add(dataBean.getThumbnail01());
}
if (!TextUtils.isEmpty(dataBean.getThumbnail02())) {
imgs.add(dataBean.getThumbnail02());
}
if (!TextUtils.isEmpty(dataBean.getThumbnail03())) {
imgs.add(dataBean.getThumbnail03());
}
bundle = new Bundle();
bundle.putStringArrayList("imgs", imgs);
bundle.putString("url", dataBean.getUrl());
startActivity(WebActivity.class, bundle);
}
});
}
@Override
protected void setMoreAction() {
super.setMoreAction();
getData();
}
private void getData() {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... strings) {
return HttpUtils.getFromHttp(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
News news = gson.fromJson(s, News.class);
if (news != null) {
News.ResultBean result = news.getResult();
if (result != null) {
List<News.ResultBean.DataBean> data = result.getData();
if (data != null) {
list.clear();
list.addAll(data);
adapter.notifyDataSetChanged();
}
}
}
}
}.execute(ServerUrl.FRAGMENT_URL_01);
}
}
public class XListFragment extends BaseFragment {
private XListView xlvData;
private List<Banner.BodyBean.ResultBean> list;
private BannerAdapter adapter;
private boolean isLoadMore = false;
private int page = 1;
private Handler handler = new Handler();
@Override
protected int getContentView() {
return R.layout.fragment_xlist;
}
@Override
protected void initView(View v) {
xlvData = v.findViewById(R.id.xlv_data);
}
@Override
protected void initData() {
super.initData();
xlvData.setPullRefreshEnable(true);
xlvData.setPullLoadEnable(true);
list = new ArrayList<>();
adapter = new BannerAdapter(mContext, list);
xlvData.setAdapter(adapter);
}
@Override
protected void setListener() {
super.setListener();
xlvData.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page = 1;
isLoadMore = false;
getData();
stopRefresh();
}
@Override
public void onLoadMore() {
page++;
isLoadMore = true;
getData();
stopRefresh();
}
});
}
private void stopRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (isLoadMore) {
xlvData.stopLoadMore();
} else {
xlvData.stopRefresh();
}
}
}, 2000);
}
@Override
protected void setMoreAction() {
super.setMoreAction();
getData();
}
private void getData() {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... strings) {
return HttpUtils.getFromHttp(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Banner banner = gson.fromJson(s, Banner.class);
if (banner != null) {
Banner.BodyBean body = banner.getBody();
if (body != null) {
List<Banner.BodyBean.ResultBean> result = body.getResult();
if (result != null) {
if (!isLoadMore) {
list.clear();
}
list.addAll(result);
adapter.notifyDataSetChanged();
}
}
}
}
}.execute(ServerUrl.FRAGMENT_URL_02 + page);
}
}
public class MainActivity extends BaseActivity {
public static final int FLAG = 123;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case FLAG:
startActivity(HomeActivity.class);
break;
}
}
};
@Override
protected int getContentView() {
return R.layout.activity_main;
}
@Override
protected void initView() {
}
@Override
protected void initData() {
super.initData();
Message msg = Message.obtain();
msg.what = FLAG;
handler.sendMessageDelayed(msg, 2000);
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacksAndMessages(null);
}
}
public class HomeActivity extends BaseActivity {
private ImageView btnSwitch;
private MutilListFragment mlvFragment;
private XListFragment xlvFragment;
private int page = 0;
private FragmentManager manager;
@Override
protected int getContentView() {
return R.layout.activity_home;
}
@Override
protected void initView() {
btnSwitch = findViewById(R.id.btn_switch);
}
@Override
protected void initData() {
super.initData();
mlvFragment = new MutilListFragment();
xlvFragment = new XListFragment();
manager = getSupportFragmentManager();
manager.beginTransaction()
.add(R.id.content, mlvFragment)
.add(R.id.content, xlvFragment)
.hide(xlvFragment)
.commit();
}
@Override
protected void setListener() {
super.setListener();
btnSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// page = page == 0 ? 1 : 0;
// 如果当前是第一页的时候,点击按钮切换到第二页
if (page == 0) {
page = 1;
manager.beginTransaction().hide(mlvFragment)
.show(xlvFragment).commit();
} else {
// 如果当前是第二页的时候,点击按钮切换成第一页
page = 0;
manager.beginTransaction().hide(xlvFragment)
.show(mlvFragment).commit();
}
}
});
}
}
public class WebActivity extends BaseActivity {
private ViewPager vpBanner;
private WebView wv;
private ArrayList<String> imgs;
private String url;
@Override
protected int getContentView() {
return R.layout.activity_web;
}
@Override
protected void initView() {
vpBanner = findViewById(R.id.vp_banner);
wv = findViewById(R.id.wv);
}
@Override
protected void initData() {
super.initData();
if (bundle == null) {
return;
}
imgs = bundle.getStringArrayList("imgs");
url = bundle.getString("url");
vpBanner.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return imgs.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView img = new ImageView(mContext);
ImageLoader.getInstance().displayImage(imgs.get(position), img);
container.addView(img);
return img;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
});
wv.loadUrl(url);
wv.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
});
}
}