public class MainActivity extends AppCompatActivity {
private ViewPager vp;
private List<String> tabtitle;
private List<String> url;
private List<Fragment> list;
private TabLayout tab;
private ImageView pindao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
tabtitle = new ArrayList<String>();
tabtitle.add("推荐");
tabtitle.add("最新");
tabtitle.add("生活");
tabtitle.add("娱乐 ");
tabtitle.add("文化");
tabtitle.add("感情");
tabtitle.add("知识");
tabtitle.add("感情");
tabtitle.add("社会");
tabtitle.add("军事");
url = Arrays.asList(
"http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1455521444&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=news_hot&count=20&min_behot_time=1455521166&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_nme=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=news_local&count=20&min_behot_time=1455521226&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&user_city=北京&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=video&count=20&min_behot_time=1455521349&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522107&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=news_society&count=20&min_behot_time=1455521720&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522107&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=news_entertainment&count=20&min_behot_time=1455522338&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&min_behot_time=1455522427&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=news_car&count=20&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455522784&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000",
"http://ic.snssdk.com/2/article/v25/stream/?category=image_ppmm&count=20&min_behot_time=1455524172&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455524092&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000"
,"http://ic.snssdk.com/2/article/v25/stream/?category=news_health&count=20&bd_city=北京市&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455524092&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000");
list = new ArrayList<Fragment>();
for (int i=0 ;i <tabtitle.size() ;i++){
NewsFragment newsFragment = new NewsFragment();
Bundle bundle = new Bundle();
bundle.putString("url", url.get(i));
newsFragment.setArguments(bundle);
list.add(newsFragment);
}
Myvp myvp = new Myvp(getSupportFragmentManager());
vp.setAdapter(myvp);
vp.setOffscreenPageLimit(tabtitle.size());
tab.setupWithViewPager(vp);
//标签的格式
tab.setTabMode(TabLayout.MODE_SCROLLABLE);
pindao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, PingDao.class);
startActivity(intent);
}
});
}
private void initView() {
tab = (TabLayout) findViewById(R.id.tab);
vp = (ViewPager) findViewById(R.id.vp);
pindao = (ImageView) findViewById(R.id.pingdao);
}
class Myvp extends FragmentPagerAdapter{
public Myvp(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return tabtitle.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabtitle.get(position);
}
}
}
Xutils 的初始化化
package com.example.apkupdatademo;
import android.app.Application;
import org.xutils.x;
/**
* Created by yfeng on 2017/9/16.
*/
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(true);
}
}
在Fragment的界面做网络请求数据和做的适配
/**
* 2017/9/16.
* 作用:
*/
public class NewsFragment extends Fragment implements XListView.IXListViewListener {
private String dataurl;
private View view;
private XListView xlv;
private Myadapter myadapter;
private boolean flag;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments()!=null){
dataurl = getArguments().getString("url");
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.newsfragment, null);
xlv = (XListView) view.findViewById(R.id.xlistview);
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(this);
getData();
return view;
}
public void getData() {
// getNextData(dataurl);
getnextData(dataurl);
}
//写了两种网络请求,任选其一
private void getnextData(String dataurl) {
new AsyncTask<String, Void, String>() {
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s==null){
return;
}
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class);
final List<Bean.DataBean> list = bean.getData();
if(myadapter==null){
myadapter = new Myadapter(getActivity(), list);
xlv.setAdapter(myadapter);
}else {
myadapter.Loadmeoth(list, flag);
xlv.setAdapter(myadapter);
}
}
@Override
protected String doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int code = connection.getResponseCode();
if(code ==200){
InputStream is = connection.getInputStream();
return SramTools.GetRead(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(dataurl);
}
//Xutils的Get请求
private void getNextData(String url) {
RequestParams params = new RequestParams(url);
x.http().get(params, new Callback.CommonCallback<String>() {
private Myadapter myadapter;
@Override
public void onSuccess(String result) {
Gson gson = new Gson();
Bean bean = gson.fromJson(result, Bean.class);
List<Bean.DataBean> list = bean.getData();
myadapter = new Myadapter(getActivity(),list);
xlv.setAdapter(myadapter);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
@Override
public void onRefresh() {
getData();
xlv.stopRefresh();
flag = true;
}
@Override
public void onLoadMore() {
getData();
xlv.stopLoadMore();
flag = false;
}
}
做适配的的方法和多条目
public class Myadapter extends BaseAdapter {
Context context;
List<Bean.DataBean> list;
private final DisplayImageOptions options;
public Myadapter(Context context, List<Bean.DataBean> list) {
this.context = context;
this.list= list;
options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageForEmptyUri(R.mipmap.ic_empty)
.showImageOnFail(R.mipmap.ic_error)
.showImageOnLoading(R.mipmap.loading)
.build();
}
public void Loadmeoth(List<Bean.DataBean> datas,boolean flag){
for (int i= datas.size()-1 ;i> -1;i--){
if (flag){
list.add(0,datas.get(i));
}else{
list.add(datas.get(i));
}
}
notifyDataSetChanged();
}
@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 4;
}
@Override
public int getItemViewType(int position) {
if(list.get(position).getVideo_detail_info()==null){
if(list.get(position).getImage_list()==null){
return 0; //没有图片
}else if (list.get(position).getImage_list().size() == 3){
return 1; //三张图片
}else {
return 2; // 一张图片
}
}else{
return 3; //视频
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Viewholder viewholder = null;
int type = getItemViewType(position);
if(convertView == null) {
viewholder = new Viewholder();
switch (type) {
case 0:
convertView = View.inflate(context, R.layout.fragment_one, null);
viewholder.title = (TextView) convertView.findViewById(R.id.title);
viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
break;
case 1:
convertView = View.inflate(context, R.layout.fragment_three, null);
viewholder.title = (TextView) convertView.findViewById(R.id.title);
viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
viewholder.image1 = (ImageView) convertView.findViewById(R.id.image1);
viewholder.image2 = (ImageView) convertView.findViewById(R.id.image2);
viewholder.image3 = (ImageView) convertView.findViewById(R.id.image3);
break;
case 2:
convertView = View.inflate(context, R.layout.fragment_two, null);
viewholder.title = (TextView) convertView.findViewById(R.id.title);
viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
viewholder.image1 = (ImageView) convertView.findViewById(R.id.image1);
break;
case 3:
convertView = View.inflate(context, R.layout.fragment_fout, null);
viewholder.title = (TextView) convertView.findViewById(R.id.title);
viewholder.connect = (TextView) convertView.findViewById(R.id.connect);
viewholder.viod = (ImageView) convertView.findViewById(R.id.viod);
break;
}
convertView.setTag(viewholder);
}else {
viewholder = (Viewholder) convertView.getTag();
}
switch (type){
case 0:
viewholder.title.setText(list.get(position).getTitle());
viewholder.connect.setText(list.get(position).getSource()+" 评论:"+list.get(position).getComment_count());
break;
case 1:
viewholder.title.setText(list.get(position).getTitle());
viewholder.connect.setText(list.get(position).getSource()+" 评论:"+list.get(position).getComment_count());
ImageLoader.getInstance().displayImage(list.get(position).getImage_list().get(0).getUrl(),viewholder.image1,options);
ImageLoader.getInstance().displayImage(list.get(position).getImage_list().get(1).getUrl(),viewholder.image2,options);
ImageLoader.getInstance().displayImage(list.get(position).getImage_list().get(2).getUrl(),viewholder.image3,options);
break;
case 2:
viewholder.title.setText(list.get(position).getTitle());
viewholder.connect.setText(list.get(position).getSource()+" 评论:"+list.get(position).getComment_count());
ImageLoader.getInstance().displayImage(list.get(position).getMiddle_image().getUrl(),viewholder.image1,options);
break;
case 3:
viewholder.title.setText(list.get(position).getTitle());
viewholder.connect.setText(list.get(position).getSource()+" 评论:"+list.get(position).getComment_count());
ImageLoader.getInstance().displayImage(list.get(position).getVideo_detail_info().getDetail_video_large_image().getUrl(),viewholder.viod,options);
break;
}
return convertView;
}
class Viewholder{
TextView title;
TextView connect;
ImageView image1 ,image2,image3 ,viod;
}
}