//activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context="cn.bawei.com.newyuekao.MainActivity">
<FrameLayout
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></FrameLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_weight="6"
app:tabSelectedTextColor="#333093"
app:tabIndicatorColor="#333093"
android:layout_height="match_parent">
</android.support.design.widget.TabLayout>
</LinearLayout>
//content.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textSize="25sp"
android:layout_marginLeft="52dp"
android:layout_marginStart="52dp"
android:layout_marginTop="33dp"
android:id="@+id/text" />
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</LinearLayout>
//content2.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="94dp"
android:layout_marginStart="94dp"
android:layout_marginTop="69dp"
android:textSize="20sp"
android:id="@+id/text1" />
</RelativeLayout>
</LinearLayout>
//fragment01.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout1"
android:layout_weight="8"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout>
//fragment01_1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.youth.banner.Banner>
<TextView
android:id="@+id/textVvvv"
android:layout_width="match_parent"
android:text="111111"
android:layout_height="wrap_content" />
<me.maxwin.view.XListView
android:id="@+id/xlisview"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></me.maxwin.view.XListView>
</LinearLayout>
//frament02.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="222222222"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>
//fragment03.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="3333333"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>
//fragment04.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="444444444"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>
//mainactivity.java
public class MainActivity extends FragmentActivity {
private TabLayout tabLayout;
private Fragment01 fragment01;
private Fragment02 fragment02;
private Fragment03 fragment03;
private Fragment04 fragment04;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabLayout = (TabLayout) findViewById(R.id.tablayout);
//给tablayout设置一下item
tabLayout.addTab(tabLayout.newTab().setText("技术").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("资讯").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("学园").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("我的").setIcon(R.mipmap.ic_launcher));
//实例化fragment
fragment01 = new Fragment01();
fragment02 = new Fragment02();
fragment03 = new Fragment03();
fragment04 = new Fragment04();
//默认先让第一个显示
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment01)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment02)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment03)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment04)
.commit();
//显示第一个fragment其他都隐藏
getSupportFragmentManager().beginTransaction().show(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
//设置监听
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getText().equals("技术")){
//如果tab的标题是技术就显示第一个
getSupportFragmentManager().beginTransaction().show(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else if (tab.getText().equals("资讯")){//同理可得
getSupportFragmentManager().beginTransaction().show(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else if (tab.getText().equals("学园")){
getSupportFragmentManager().beginTransaction().show(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else{
getSupportFragmentManager().beginTransaction().show(fragment04).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
//GlideImageLoader.java
public class GlideImageLoader extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}
//MyAdapter.java
public class MyAdapter extends BaseAdapter {
Context context;
List<Listbean.DataBean.ComicsBean> list;
final int TYPE_1 = 0;
final int TYPE_2 = 1;
public MyAdapter(Context context,List<Listbean.DataBean.ComicsBean> 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) {
int i = position % 2;
switch (i){
case 1:return TYPE_1;
default: return TYPE_2;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
int type = getItemViewType(position);
if(convertView==null){
if (type==TYPE_1){
convertView=View.inflate(context, R.layout.content,null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
}else{
convertView=View.inflate(context, R.layout.conten2,null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.text1);
}
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
if (type==TYPE_1){
holder.text.setText("TYPE_1"+list.get(position).getTitle());
Glide.with(context).load(list.get(position).getCover_image_url()).into(holder.imageView);
}else{
holder.text1.setText("TYPE_2"+list.get(position).getTitle());
}
return convertView;
}
class ViewHolder{
TextView text,text1;
ImageView imageView;
}
}
//bean包(3个bean类)
//images.java( 1 第一个 解析出来数据 轮播图)
//Listbean.java( 2 第二个 解析出来的数据 bean)
//TitleBean.java ( 3 第三个 )
public class TitleBean extends DataSupport {
String title;
@Override
public String toString() {
return "TitleBean{" +
"title='" + title + '\'' +
'}';
}
public TitleBean(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
//fragment 包(跟四个fragment.xml 布局相照应)
//fragment01.java(第一个frafment)
public class Fragment01 extends Fragment {
private TabLayout tabLayout;
private ViewPager viewPager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01,container,false);
tabLayout = (TabLayout) view.findViewById(R.id.tablayout1);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
tabLayout.addTab(tabLayout.newTab().setText("推荐"));
tabLayout.addTab(tabLayout.newTab().setText("电子商务"));
tabLayout.addTab(tabLayout.newTab().setText("互联网金融"));
tabLayout.addTab(tabLayout.newTab().setText("物联网"));
viewPager.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
@Override
public int getCount() {
return 4;
}
@Override
public Fragment getItem(int position) {
Fragment fragment =null;
fragment = new Fragment01_1();
Bundle bundle = new Bundle();
bundle.putInt("name",position);
fragment.setArguments(bundle);
return fragment;
}
});
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setText("推荐");
tabLayout.getTabAt(1).setText("电子商务");
tabLayout.getTabAt(2).setText("互联网金融");
tabLayout.getTabAt(3).setText("物联网");
return view;
}
}
//fragment01_1.java
public class Fragment01_1 extends Fragment implements XListView.IXListViewListener{
private Banner banner;
private String urlpath = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb3J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0lGSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW5faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW50IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmVudCI6IlJlYWRGaW5kUGFnZSJ9";
private String listurl = "http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODI4ODU4NjAwLCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJGcm9tSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6NDYsIiRzY3JlZW5fd2lkdGgiOjEwMjQsIiRvcyI6IkFuZHJvaWQiLCJUcmlnZ2VyUGFnZSI6IkhvbWVQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkSG9tZVBhZ2UifQ%3D%3D";
private XListView xListView;
private List<String> images;
private List<String> titles;
private MyAdapter adapter;
private List<Listbean.DataBean.ComicsBean> list ;
private TextView text;
public Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
Gson gson = new Gson();
if (msg.what==0){
Images img = gson.fromJson(msg.obj.toString(), Images.class);
List<Images.DataBean.InfosBean> infos = img.getData().getInfos();
List<Images.DataBean.InfosBean.BannersBean> banners = infos.get(0).getBanners();
for (Images.DataBean.InfosBean.BannersBean bean:banners){
images.add(bean.getPic());
titles.add(bean.getTarget_title());
new TitleBean(bean.getTarget_title()).save();
}
banner.setImages(images);
banner.setBannerTitles(titles);
banner.start();
}else{
Listbean listbean = gson.fromJson(msg.obj.toString(), Listbean.class);
List<Listbean.DataBean.ComicsBean> comics = listbean.getData().getComics();
list.addAll(comics);
adapter.notifyDataSetChanged();
}
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01_1,container,false);
images = new ArrayList<>();
titles = new ArrayList<>();
list = new ArrayList<>();
text = (TextView) view.findViewById(R.id.textVvvv);
xListView = (XListView) view.findViewById(R.id.xlisview);
banner = (Banner) view.findViewById(R.id.banner);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置适配器
adapter = new MyAdapter(getActivity(),list);
xListView.setAdapter(adapter);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(this);
//获取的上一次bundle
Bundle bundle = getArguments();
int name = bundle.getInt("name");
switch (name){
case 0:banner.setVisibility(View.VISIBLE);
xListView.setVisibility(View.VISIBLE);
text.setVisibility(View.GONE);
break;
default:banner.setVisibility(View.GONE);
xListView.setVisibility(View.GONE);
text.setVisibility(View.VISIBLE);
break;
}
text.setText(name+"");
//轮播图的数据
new Thread(){
@Override
public void run() {
String s = UrlUtils.geturlPath(urlpath);
Message msg = Message.obtain();
msg.obj = s;
msg.what =0;
handler.sendMessage(msg);
}
}.start();
//xlistview的数据
new Thread(){
@Override
public void run() {
loaddata();
}
}.start();
return view;
}
private void loaddata() {
String s = UrlUtils.geturlPath(listurl);
Message msg = Message.obtain();
msg.obj = s;
msg.what =1;
handler.sendMessage(msg);
}
/**
* 停止xlistview的加载和更新
*/
private void stopp(){
xListView.stopLoadMore();
xListView.stopRefresh();
xListView.setRefreshTime("刚才");
}
/**
* 刷新信息
*/
@Override
public void onRefresh() {
new Thread(){
@Override
public void run() {
try {
sleep(2000);//2s后刷新数据
} catch (InterruptedException e) {
e.printStackTrace();
}
//先清除list里的数据
list.clear();
//重新请求数据
loaddata();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopp();
}
});
}
}.start();
}
/**
* 加载更多 因为接口问题 2s后就停止
*/
@Override
public void onLoadMore() {
new Thread(){
@Override
public void run() {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopp();
}
});
}
}.start();
}
}
//fragment02.java
public class Fragment02 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment02,container,false);
return view;
}
}
//fragment03.java
public class Fragment03 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment03,container,false);
return view;
}
}
//fragment04.java
public class Fragment04 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment04,container,false);
return view;
}
}
//urlutils.java(工具类)
public class UrlUtils {
public static String geturlPath(String urlPath) {
try {
URL url = new URL(urlPath);
HttpURLConnection conn =(HttpURLConnection)url.openConnection();
conn.connect();
if(conn.getResponseCode()==200){
InputStream in = conn.getInputStream();
byte [] buff =new byte[1024];
int len =-1;
StringBuffer sb=new StringBuffer();
while ((len=in.read(buff))!=-1){
sb.append(new String(buff,0,len,"utf-8"));
}
Log.e("base", "loadData: "+sb.toString());
in.close();
return sb.toString();
}
conn.disconnect();
} catch (Exception e) {
Log.e("base", "catch----------: ");
e.printStackTrace();
}
return null;
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context="cn.bawei.com.newyuekao.MainActivity">
<FrameLayout
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></FrameLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_weight="6"
app:tabSelectedTextColor="#333093"
app:tabIndicatorColor="#333093"
android:layout_height="match_parent">
</android.support.design.widget.TabLayout>
</LinearLayout>
//content.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textSize="25sp"
android:layout_marginLeft="52dp"
android:layout_marginStart="52dp"
android:layout_marginTop="33dp"
android:id="@+id/text" />
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
app:srcCompat="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</LinearLayout>
//content2.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="94dp"
android:layout_marginStart="94dp"
android:layout_marginTop="69dp"
android:textSize="20sp"
android:id="@+id/text1" />
</RelativeLayout>
</LinearLayout>
//fragment01.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout1"
android:layout_weight="8"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout>
//fragment01_1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.youth.banner.Banner>
<TextView
android:id="@+id/textVvvv"
android:layout_width="match_parent"
android:text="111111"
android:layout_height="wrap_content" />
<me.maxwin.view.XListView
android:id="@+id/xlisview"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="match_parent"></me.maxwin.view.XListView>
</LinearLayout>
//frament02.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="222222222"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>
//fragment03.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="3333333"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>
//fragment04.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="444444444"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</RelativeLayout>
//mainactivity.java
public class MainActivity extends FragmentActivity {
private TabLayout tabLayout;
private Fragment01 fragment01;
private Fragment02 fragment02;
private Fragment03 fragment03;
private Fragment04 fragment04;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabLayout = (TabLayout) findViewById(R.id.tablayout);
//给tablayout设置一下item
tabLayout.addTab(tabLayout.newTab().setText("技术").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("资讯").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("学园").setIcon(R.mipmap.ic_launcher));
tabLayout.addTab(tabLayout.newTab().setText("我的").setIcon(R.mipmap.ic_launcher));
//实例化fragment
fragment01 = new Fragment01();
fragment02 = new Fragment02();
fragment03 = new Fragment03();
fragment04 = new Fragment04();
//默认先让第一个显示
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment01)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment02)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment03)
.commit();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment,fragment04)
.commit();
//显示第一个fragment其他都隐藏
getSupportFragmentManager().beginTransaction().show(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
//设置监听
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getText().equals("技术")){
//如果tab的标题是技术就显示第一个
getSupportFragmentManager().beginTransaction().show(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else if (tab.getText().equals("资讯")){//同理可得
getSupportFragmentManager().beginTransaction().show(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else if (tab.getText().equals("学园")){
getSupportFragmentManager().beginTransaction().show(fragment03).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment04).commit();
}else{
getSupportFragmentManager().beginTransaction().show(fragment04).commit();
getSupportFragmentManager().beginTransaction().hide(fragment01).commit();
getSupportFragmentManager().beginTransaction().hide(fragment02).commit();
getSupportFragmentManager().beginTransaction().hide(fragment03).commit();
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
//GlideImageLoader.java
public class GlideImageLoader extends ImageLoader{
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}
//MyAdapter.java
public class MyAdapter extends BaseAdapter {
Context context;
List<Listbean.DataBean.ComicsBean> list;
final int TYPE_1 = 0;
final int TYPE_2 = 1;
public MyAdapter(Context context,List<Listbean.DataBean.ComicsBean> 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) {
int i = position % 2;
switch (i){
case 1:return TYPE_1;
default: return TYPE_2;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
int type = getItemViewType(position);
if(convertView==null){
if (type==TYPE_1){
convertView=View.inflate(context, R.layout.content,null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
}else{
convertView=View.inflate(context, R.layout.conten2,null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.text1);
}
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
if (type==TYPE_1){
holder.text.setText("TYPE_1"+list.get(position).getTitle());
Glide.with(context).load(list.get(position).getCover_image_url()).into(holder.imageView);
}else{
holder.text1.setText("TYPE_2"+list.get(position).getTitle());
}
return convertView;
}
class ViewHolder{
TextView text,text1;
ImageView imageView;
}
}
//bean包(3个bean类)
//images.java( 1 第一个 解析出来数据 轮播图)
//Listbean.java( 2 第二个 解析出来的数据 bean)
//TitleBean.java ( 3 第三个 )
public class TitleBean extends DataSupport {
String title;
@Override
public String toString() {
return "TitleBean{" +
"title='" + title + '\'' +
'}';
}
public TitleBean(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
//fragment 包(跟四个fragment.xml 布局相照应)
//fragment01.java(第一个frafment)
public class Fragment01 extends Fragment {
private TabLayout tabLayout;
private ViewPager viewPager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01,container,false);
tabLayout = (TabLayout) view.findViewById(R.id.tablayout1);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
tabLayout.addTab(tabLayout.newTab().setText("推荐"));
tabLayout.addTab(tabLayout.newTab().setText("电子商务"));
tabLayout.addTab(tabLayout.newTab().setText("互联网金融"));
tabLayout.addTab(tabLayout.newTab().setText("物联网"));
viewPager.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
@Override
public int getCount() {
return 4;
}
@Override
public Fragment getItem(int position) {
Fragment fragment =null;
fragment = new Fragment01_1();
Bundle bundle = new Bundle();
bundle.putInt("name",position);
fragment.setArguments(bundle);
return fragment;
}
});
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setText("推荐");
tabLayout.getTabAt(1).setText("电子商务");
tabLayout.getTabAt(2).setText("互联网金融");
tabLayout.getTabAt(3).setText("物联网");
return view;
}
}
//fragment01_1.java
public class Fragment01_1 extends Fragment implements XListView.IXListViewListener{
private Banner banner;
private String urlpath = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb3J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0lGSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW5faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW50IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmVudCI6IlJlYWRGaW5kUGFnZSJ9";
private String listurl = "http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODI4ODU4NjAwLCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJGcm9tSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6NDYsIiRzY3JlZW5fd2lkdGgiOjEwMjQsIiRvcyI6IkFuZHJvaWQiLCJUcmlnZ2VyUGFnZSI6IkhvbWVQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkSG9tZVBhZ2UifQ%3D%3D";
private XListView xListView;
private List<String> images;
private List<String> titles;
private MyAdapter adapter;
private List<Listbean.DataBean.ComicsBean> list ;
private TextView text;
public Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
Gson gson = new Gson();
if (msg.what==0){
Images img = gson.fromJson(msg.obj.toString(), Images.class);
List<Images.DataBean.InfosBean> infos = img.getData().getInfos();
List<Images.DataBean.InfosBean.BannersBean> banners = infos.get(0).getBanners();
for (Images.DataBean.InfosBean.BannersBean bean:banners){
images.add(bean.getPic());
titles.add(bean.getTarget_title());
new TitleBean(bean.getTarget_title()).save();
}
banner.setImages(images);
banner.setBannerTitles(titles);
banner.start();
}else{
Listbean listbean = gson.fromJson(msg.obj.toString(), Listbean.class);
List<Listbean.DataBean.ComicsBean> comics = listbean.getData().getComics();
list.addAll(comics);
adapter.notifyDataSetChanged();
}
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01_1,container,false);
images = new ArrayList<>();
titles = new ArrayList<>();
list = new ArrayList<>();
text = (TextView) view.findViewById(R.id.textVvvv);
xListView = (XListView) view.findViewById(R.id.xlisview);
banner = (Banner) view.findViewById(R.id.banner);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置适配器
adapter = new MyAdapter(getActivity(),list);
xListView.setAdapter(adapter);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(this);
//获取的上一次bundle
Bundle bundle = getArguments();
int name = bundle.getInt("name");
switch (name){
case 0:banner.setVisibility(View.VISIBLE);
xListView.setVisibility(View.VISIBLE);
text.setVisibility(View.GONE);
break;
default:banner.setVisibility(View.GONE);
xListView.setVisibility(View.GONE);
text.setVisibility(View.VISIBLE);
break;
}
text.setText(name+"");
//轮播图的数据
new Thread(){
@Override
public void run() {
String s = UrlUtils.geturlPath(urlpath);
Message msg = Message.obtain();
msg.obj = s;
msg.what =0;
handler.sendMessage(msg);
}
}.start();
//xlistview的数据
new Thread(){
@Override
public void run() {
loaddata();
}
}.start();
return view;
}
private void loaddata() {
String s = UrlUtils.geturlPath(listurl);
Message msg = Message.obtain();
msg.obj = s;
msg.what =1;
handler.sendMessage(msg);
}
/**
* 停止xlistview的加载和更新
*/
private void stopp(){
xListView.stopLoadMore();
xListView.stopRefresh();
xListView.setRefreshTime("刚才");
}
/**
* 刷新信息
*/
@Override
public void onRefresh() {
new Thread(){
@Override
public void run() {
try {
sleep(2000);//2s后刷新数据
} catch (InterruptedException e) {
e.printStackTrace();
}
//先清除list里的数据
list.clear();
//重新请求数据
loaddata();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopp();
}
});
}
}.start();
}
/**
* 加载更多 因为接口问题 2s后就停止
*/
@Override
public void onLoadMore() {
new Thread(){
@Override
public void run() {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
stopp();
}
});
}
}.start();
}
}
//fragment02.java
public class Fragment02 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment02,container,false);
return view;
}
}
//fragment03.java
public class Fragment03 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment03,container,false);
return view;
}
}
//fragment04.java
public class Fragment04 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment04,container,false);
return view;
}
}
//urlutils.java(工具类)
public class UrlUtils {
public static String geturlPath(String urlPath) {
try {
URL url = new URL(urlPath);
HttpURLConnection conn =(HttpURLConnection)url.openConnection();
conn.connect();
if(conn.getResponseCode()==200){
InputStream in = conn.getInputStream();
byte [] buff =new byte[1024];
int len =-1;
StringBuffer sb=new StringBuffer();
while ((len=in.read(buff))!=-1){
sb.append(new String(buff,0,len,"utf-8"));
}
Log.e("base", "loadData: "+sb.toString());
in.close();
return sb.toString();
}
conn.disconnect();
} catch (Exception e) {
Log.e("base", "catch----------: ");
e.printStackTrace();
}
return null;
}
}