主页面
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private RadioGroup group;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
pager = (ViewPager)findViewById (R.id.pager);
group = findViewById (R.id.group);
group.check (group.getChildAt (0).getId ());
findViewById( R.id.button1).setBackgroundColor(Color.RED);
findViewById( R.id.button2).setBackgroundColor(Color.GREEN);
ArrayList<Fragment> list = new ArrayList<Fragment> ();
FragListview fragListview=new FragListview ();
FragGridview fragGridview=new FragGridview ();
list.add (fragListview);
list.add (fragGridview);
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) {
group.check (group.getChildAt (i).getId ());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
group.setOnCheckedChangeListener (new RadioGroup.OnCheckedChangeListener () {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.button1:
findViewById( R.id.button1).setBackgroundColor(Color.RED);
findViewById( R.id.button2).setBackgroundColor(Color.GREEN);
pager.setCurrentItem (0);
break;
case R.id.button2:
findViewById( R.id.button1).setBackgroundColor(Color.GREEN);
findViewById( R.id.button2).setBackgroundColor(Color.RED);
pager.setCurrentItem (1);
break;
}
}
});
}
}
List展示页面
public class FragListview extends Fragment {
private String str="http://www.xieast.com/api/news/news.php?page=1";
private List<JsonBean.DataBean> daat;
private XListView xlist;
private MyListAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate (R.layout.listviewgson, container, false);
xlist = view.findViewById (R.id.xlist);
xlist.setPullLoadEnable (true);
xlist.setXListViewListener (new XListView.IXListViewListener () {
@Override
public void onRefresh() {
HttpUtile.httpAsynTask (str, new HttpUtile.CallBackString () {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
daat = bean.getData ();
adapter = new MyListAdapter (daat, getActivity ());
xlist.setAdapter(adapter);
onLoad();
}
});
}
@Override
public void onLoadMore() {
HttpUtile.httpAsynTask(str, new HttpUtile.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> list = bean.getData();
//把数据放进集合中
daat.addAll(list);
//刷新数据
adapter.notifyDataSetChanged ();
onLoad();
}
});
}
});
HttpUtile.httpAsynTask (str, new HttpUtile.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
daat = bean.getData();
//第七部适配器
adapter = new MyListAdapter (daat, getActivity ());
// 第八步 设置适配器
xlist.setAdapter(adapter);
}
});
return view;
}
private void onLoad() {
//停止加载更多,重置头视图
xlist .stopRefresh();
//停止加载更多,重置脚视图
xlist.stopLoadMore();
//设置刷新时间
xlist.setRefreshTime("刚刚刷新了");
}
}
GridView展示
public class FragGridview extends Fragment implements MyAsyncTask.Callbacks{
private GridView gridview;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate (R.layout.gridviewgson, container, false);
gridview = view.findViewById (R.id.gridview);
MyAsyncTask task=new MyAsyncTask();
task.setCallbacks(this);
task.execute("http://www.xieast.com/api/news/news.php?page=1");
return view;
}
@Override
public String getData(String string) {
Gson gson = new Gson();
JsonBean listBean = gson.fromJson(string, JsonBean.class);
List<JsonBean.DataBean> list = listBean.getData ();
gridview.setAdapter(new MyAdapter(list,getActivity()));
return null;
}
}
XList配置
public class MyListAdapter extends BaseAdapter {
private List<JsonBean.DataBean> daat;
private Context context;
public MyListAdapter(List<JsonBean.DataBean> daat, Context context) {
this.daat = daat;
this.context = context;
}
@Override
public int getCount() {
return daat.size ();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
switch (getItemViewType (position)) {
case 0:
ViewHolder0 vh=null;
if(convertView == null) {
convertView = View.inflate (context, R.layout.itme1, null);
vh = new ViewHolder0 ();
vh.text0 = convertView.findViewById (R.id.text1);
vh.image0 = convertView.findViewById (R.id.image1);
convertView.setTag (vh);
}else{
vh =(ViewHolder0) convertView.getTag ();
}
JsonBean.DataBean bean = daat.get (position);
vh.text0.setText (bean.getAuthor_name ()+"");
ImageLoader.getInstance ().displayImage (bean.getThumbnail_pic_s02 (),vh.image0);
break;
case 1:
ViewHolder1 vh1=null;
if(convertView == null) {
convertView = View.inflate (context, R.layout.itme2, null);
vh1 = new ViewHolder1 ();
vh1.text2 = convertView.findViewById (R.id.text2);
vh1.image1 = convertView.findViewById (R.id.image2);
convertView.setTag (vh1);
}else{
vh1 =(ViewHolder1) convertView.getTag ();
}
JsonBean.DataBean bean1 = daat.get (position);
vh1.text2.setText (bean1.getAuthor_name ()+"");
ImageLoader.getInstance ().displayImage (bean1.getThumbnail_pic_s02 (),vh1.image1);
break;
}
return convertView;
}
class ViewHolder0{
TextView text0;
ImageView image0;
}
class ViewHolder1{
TextView text3,text2;
ImageView image1;
}
}
GridView配置
public class MyAdapter extends BaseAdapter {
private List<JsonBean.DataBean> list;
private Context context;
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 ho=null;
if(convertView==null){
convertView = View.inflate (context, R.layout.text, null);
ho = new ViewHolder();
ho.text = convertView.findViewById(R.id.text0);
ho.image = convertView.findViewById(R.id.image0);
convertView.setTag(ho);
}else{
ho =(ViewHolder)convertView.getTag ();
}
JsonBean.DataBean dataBean = list.get (position);
ho.text.setText (dataBean.getAuthor_name ());
ImageLoader.getInstance ().displayImage (dataBean.getThumbnail_pic_s (),ho.image);
return convertView;
}
static class ViewHolder{
TextView text;
ImageView image;
}
}
MyAsyncTask
public class MyAsyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
return HttpUtile.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;
}
}
网络请求Http
public class HttpUtile {
public static void httpAsynTask(String strUrl, final CallBackString backString) {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... strings) {
return httpGet(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//接口回调的方法
backString.getData(s);
}
}.execute(strUrl);
}
public static String requestHttpGet(String strUrl) {
try { //设置url
URL url = new URL(strUrl);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为get请求
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;
}
public interface CallBackString{
void getData(String s);
}
public static String httpGet(String strUrl){
try {
URL url = new URL (strUrl);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为get请求
connection.setRequestMethod("GET");
//设置连接主机超时时间
connection.setConnectTimeout(5000);
//设置从主机读取数据超时
connection.setReadTimeout(5000);
//获取请求码(来判断网络请求是否正确)
InputStream stream = connection.getInputStream ();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
//拼接字符串
StringBuilder builder = new StringBuilder();
//把数据读取从成字符串
String str = "";
while ((str = reader.readLine()) != null) {
//把一行行数据拼接成一行数据
builder.append(str);
}
connection.disconnect();
return builder.toString ();
} catch (Exception e) {
e.printStackTrace ();
}
return null;
}
}
App
public class App extends Application {
@Override
public void onCreate() {
super.onCreate ();
DisplayImageOptions options = new DisplayImageOptions.Builder ().showImageOnLoading (R.mipmap.ic_launcher).displayer (new CircleBitmapDisplayer ()).build ();
ImageLoaderConfiguration loader = new ImageLoaderConfiguration.Builder (this).defaultDisplayImageOptions (options).build ();
ImageLoader imageLoader = ImageLoader.getInstance ();
imageLoader.init (loader);
}
}
MyFragmentAdapter
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 ();
}
}