M1:
package com.example.lenovo.weektext01;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TableLayout;
import com.example.lenovo.weektext01.fragment.NewsFragment;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TabLayout tblNews;
private ViewPager vp;
private List<String> list;
private List<Fragment> fraglist;
private List<String> urls;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tblNews = findViewById(R.id.tbl_news);
vp = findViewById(R.id.vp);
list = new ArrayList<>();
list.add("全部");
list.add("国内");
list.add("国际");
list.add("科技");
list.add("股市");
list.add("美股");
list.add("财经");
list.add("体育");
list.add("娱乐");
list.add("军事");
list.add("科技");
fraglist = new ArrayList<>();
urls = new ArrayList<>();
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2509&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2510&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2511&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2515&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2517&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2518&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2516&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2669&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2512&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2513&k=&num=20&page=");
urls.add("https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2514&k=&num=20&page=");
for (int i=0;i<urls.size();i++){
NewsFragment newsFragment = new NewsFragment();
Bundle bundle = new Bundle();
bundle.putString("urls",urls.get(i));
newsFragment.setArguments(bundle);
fraglist.add(newsFragment);
}
tblNews.setTabMode(TabLayout.MODE_SCROLLABLE);
tblNews.setTabTextColors(ColorStateList.valueOf(Color.BLACK));
vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return fraglist.get(position);
}
@Override
public int getCount() {
return fraglist.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return list.get(position);
}
});
tblNews.setupWithViewPager(vp);
}
}
(TabLayout)
<android.support.design.widget.TabLayout
android:id="@+id/tbl_news"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
NewFrag2:
package com.example.lenovo.weektext01.fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import com.bwie.juan_mao.xlistview.XListView;
import com.example.lenovo.weektext01.HttpUtils;
import com.example.lenovo.weektext01.News;
import com.example.lenovo.weektext01.NewsAdapter;
import com.example.lenovo.weektext01.R;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lenovo on 2018/9/15.
*/
public class NewsFragment extends Fragment{
// private static final String url = "https://feed.mix.sina.com.cn/api/roll/get?pageid=153&lid=2509&k=&num=20&page=";
private XListView lvNews;
private List<News.ResultBean.DataBean> list;
private NewsAdapter adapter;
private static final String FLAG = "argument";
int page =1;
private boolean isMoreLoad = false;
private String url;
private Handler handler = new Handler();
//接收
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
url = bundle.getString("urls");
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_news,container,false);
lvNews = v.findViewById(R.id.lv_news);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
list = new ArrayList<>();
adapter = new NewsAdapter(getActivity(),list);
lvNews.setAdapter(adapter);
lvNews.setPullRefreshEnable(true);
lvNews.setPullLoadEnable(true);
lvNews.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page =1;
isMoreLoad=false;
getData(page);
handler.postDelayed(new Runnable() {
@Override
public void run() {
lvNews.stopRefresh();
}
},2000);
}
@Override
public void onLoadMore() {
page++;
isMoreLoad=true;
getData(page);
handler.postDelayed(new Runnable() {
@Override
public void run() {
lvNews.stopLoadMore();
}
},2000);
}
});
getData(page);
}
private void getData(int page) {
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... strings) {
return HttpUtils.getFromHttpUrlConnection(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){
if (news.getResult().getData().size() !=0){
if (!isMoreLoad){
list.clear();
}
list.addAll(news.getResult().getData());
adapter.notifyDataSetChanged();
}
}
}
}.execute(url+this.page);
}
}
A d a p t e r 3:
package com.example.lenovo.weektext01;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
/**
* Created by lenovo on 2018/9/15.
*/
public class NewsAdapter extends BaseAdapter{
private Context context;
private List<News.ResultBean.DataBean> list;
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 i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public int getViewTypeCount() {
return 5;
}
@Override
public int getItemViewType(int position) {
if(list.get(position).getImages().size()==0){
//0张
return 0;
}else if(list.get(position).getImages().size() == 1){
//一张
return 1;
}else if(list.get(position).getImages().size() == 2){
return 2;
}else if(list.get(position).getImages().size() == 3){
return 3;
}else {
return 4;
}
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
ViewHolder3 holder3 = null;
ViewHolder4 holder4 = null;
int type = getItemViewType(i);
switch (type){
//没有图片
case 0:
if(view==null){
holder = new ViewHolder();
view = View.inflate(context,R.layout.item_0,null);
holder.txtTitle= view.findViewById(R.id.txt_title);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
holder.txtTitle.setText(list.get(i).getTitle());
break;
case 1:
if (view == null) {
holder1 = new ViewHolder1();
view = View.inflate(context, R.layout.item_one, null);
holder1.imgLogo = view.findViewById(R.id.imglogo);
holder1.txtTitle = view.findViewById(R.id.txt_title);
view.setTag(holder1);
} else {
holder1 = (ViewHolder1) view.getTag();
}
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder1.imgLogo );
holder1.txtTitle.setText(list.get(i).getTitle());
break;
case 2:
if (view == null) {
holder2 = new ViewHolder2();
view = View.inflate(context, R.layout.item_two, null);
holder2.imgLogo21 = view.findViewById(R.id.img_logo21);
holder2.imgLogo22 = view.findViewById(R.id.img_logo22);
holder2.txtTitle = view.findViewById(R.id.txt_title);
view.setTag(holder2);
} else {
holder2 = (ViewHolder2) view.getTag();
}
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder2.imgLogo21);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(1).getU(), holder2.imgLogo22);
holder2.txtTitle.setText(list.get(i).getTitle());
break;
case 3:
if (view == null) {
holder3= new ViewHolder3();
view = View.inflate(context, R.layout.item_three, null);
holder3.imgLogo31 = view.findViewById(R.id.img_logo31);
holder3.imgLogo32 = view.findViewById(R.id.img_logo32);
holder3.imgLogo33 = view.findViewById(R.id.img_logo33);
holder3.txtTitle = view.findViewById(R.id.txt_title);
view.setTag(holder3);
} else {
holder3 = (ViewHolder3) view.getTag();
}
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder3.imgLogo31);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(1).getU(), holder3.imgLogo32);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(2).getU(), holder3.imgLogo33);
holder3.txtTitle.setText(list.get(i).getTitle());
break;
case 4:
if (view == null) {
holder4= new ViewHolder4();
view = View.inflate(context, R.layout.item_5, null);
holder4.imgLogo61 = view.findViewById(R.id.img_logo61);
holder4.imgLogo62 = view.findViewById(R.id.img_logo62);
holder4.imgLogo63 = view.findViewById(R.id.img_logo63);
holder4.imgLogo64 = view.findViewById(R.id.img_logo64);
holder4.imgLogo65 = view.findViewById(R.id.img_logo65);
holder4.imgLogo66 = view.findViewById(R.id.img_logo66);
holder4.imgLogo67 = view.findViewById(R.id.img_logo67);
holder4.txtTitle = view.findViewById(R.id.txt_title);
view.setTag(holder4);
} else {
holder4 = (ViewHolder4) view.getTag();
}
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo61);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo62);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo63);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo64);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo65);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo66);
ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0).getU(), holder4.imgLogo67);
holder4.txtTitle.setText(list.get(i).getTitle());
break;
}
return view;
}
class ViewHolder{
private TextView txtTitle;
}
class ViewHolder1{
private TextView txtTitle;
public ImageView imgLogo;
}
class ViewHolder2{
private TextView txtTitle;
public ImageView imgLogo21;
public ImageView imgLogo22;
}
class ViewHolder3{
private TextView txtTitle;
public ImageView imgLogo31;
public ImageView imgLogo32;
public ImageView imgLogo33;
}
class ViewHolder4{
private TextView txtTitle;
public ImageView imgLogo61;
public ImageView imgLogo62;
public ImageView imgLogo63;
public ImageView imgLogo64;
public ImageView imgLogo65;
public ImageView imgLogo66;
public ImageView imgLogo67;
}
}
本文详细介绍了使用Android平台创建一个多标签新闻应用的过程,包括TabLayout和ViewPager组件的配置,自定义适配器处理不同数量的新闻图片,以及通过异步任务从新浪API获取新闻数据并更新UI。
900

被折叠的 条评论
为什么被折叠?



