activity_main.xml
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:id="@+id/drawerLayout"
android:layout_height=“match_parent”
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabLayout">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/viewPager">
</android.support.v4.view.ViewPager>
</LinearLayout>
<fragment
class="com.bwie.a20181019_a.ChouFragment"
android:layout_width="match_parent"
android:layout_gravity="start"
android:layout_height="match_parent"/>
</android.support.v4.widget.DrawerLayout>
MainActivity
package com.bwie.a20181019_a;
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.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.TableLayout;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private ViewPager viewPager;
private ActionBarDrawerToggle mToggle;
private List<Fragment> fragments;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//初始化ActionBar
initActionBar();
//初始化ViewPager
initViewPager();
}
private void initViewPager() {
//创建list集合
fragments = new ArrayList<>();
fragments.add(new OneFragment());
fragments.add(new TwoFragment());
fragments.add(new ThreeFragment());
fragments.add(new FourFragment());
fragments.add(new FiveFragment());
//适配器
/*MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
adapter.setFragments(fragments);
viewPager.setAdapter(adapter);*/
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
});
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setText("花边");
tabLayout.getTabAt(1).setText("推荐");
tabLayout.getTabAt(2).setText("热点");
tabLayout.getTabAt(3).setText("广告");
tabLayout.getTabAt(4).setText("其他");
}
private void initActionBar() {
//创建ActionBar
ActionBar actionBar = getSupportActionBar();
//给左上角设置按钮
actionBar.setDisplayHomeAsUpEnabled(true);
//实例化ActionBarDrawerToggle
mToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
//实现同步
mToggle.syncState();
//关联
drawerLayout.addDrawerListener(mToggle);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mToggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
private void initView() {
drawerLayout = findViewById(R.id.drawerLayout);
tabLayout = findViewById(R.id.tabLayout);
viewPager = findViewById(R.id.viewPager);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
}
MyAdapter
package com.bwie.a20181019_a;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
public class MyAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public void setFragments(List<Fragment> fragments) {
this.fragments = fragments;
}
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
}
OneFragment
package com.bwie.a20181019_a;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
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.AdapterView;
import com.bwie.xlistview.XListView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import java.util.ArrayList;
import java.util.List;
/**
-
A simple {@link Fragment} subclass.
*/
public class OneFragment extends Fragment {private XListView xlist;
private List<News.DataBean> list;
public static final String url = “http://www.xieast.com/api/news/news.php?page=”;
private int page = 1;
private NewsAdapter newsAdapter;
Handler handler = new Handler();@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = View.inflate(getActivity(),R.layout.fragment_one,null);
xlist = view.findViewById(R.id.xlist);
return view;
}@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//创建List集合
list = new ArrayList<>();
//创建适配器
newsAdapter = new NewsAdapter(getActivity(), list);
xlist.setAdapter(newsAdapter);//缓存 DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true) //进行图片内存缓存 .cacheOnDisk(true) //进行SD卡缓存 .bitmapConfig(Bitmap.Config.RGB_565) //设置色彩 .build(); //刷新 xlist.setPullRefreshEnable(true); //加载更多 xlist.setPullLoadEnable(true); getDate(1,false); //点击条目跳转新的activity xlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(getActivity(),TwoActivity.class); intent.putExtra("title",list.get(position-1).getTitle()); intent.putExtra("time",list.get(position-1).getDate()); intent.putExtra("author",list.get(position-1).getAuthor_name()); intent.putExtra("image1",list.get(position-1).getThumbnail_pic_s()); intent.putExtra("image2",list.get(position-1).getThumbnail_pic_s02()); intent.putExtra("image3",list.get(position-1).getThumbnail_pic_s03()); startActivity(intent); } });
}
private void getDate(int i, final boolean b) {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String… strings) {
return HttpUtils.getFromFile(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){ list.clear(); if (!b){ list.addAll(news.getData()); } newsAdapter.notifyDataSetChanged(); handler.postDelayed(new Runnable() { @Override public void run() { if (b){ xlist.stopLoadMore(); }else { xlist.stopRefresh(); xlist.setRefreshTime("刚刚"); } } },5000); } } }.execute(url+page);
}
}
NewsAdapter
package com.bwie.a20181019_a;
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;
public class NewsAdapter extends BaseAdapter {
public static final int TYPE_ONE_PIC = 0;
public static final int TYPE_TWO_PIC = 1;
public static final int TYPE_THREE_PIC = 2;
private Context context;
private List<News.DataBean> list;
public NewsAdapter(Context context, List<News.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 3;
}
@Override
public int getItemViewType(int position) {
//首先获取下标
News.DataBean bean = list.get(position);
//判断图片是否存在
if (!TextUtils.isEmpty(bean.getThumbnail_pic_s())){
return TYPE_THREE_PIC;
}else if (!TextUtils.isEmpty(bean.getThumbnail_pic_s02())){
return TYPE_TWO_PIC;
}else {
return TYPE_ONE_PIC;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder1 holder1 = null;
ViewHolder2 holder2 = null;
ViewHolder3 holder3 = null;
int type = getItemViewType(position);
switch (type){
case TYPE_ONE_PIC:
if (convertView == null){
holder1 = new ViewHolder1();
convertView = View.inflate(context,R.layout.news1,null);
holder1.title = convertView.findViewById(R.id.title);
holder1.time = convertView.findViewById(R.id.time);
holder1.author = convertView.findViewById(R.id.author);
holder1.imageLogo1 = convertView.findViewById(R.id.imageLogo1);
convertView.setTag(holder1);
}else {
holder1 = (ViewHolder1) convertView.getTag();
}
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder1.imageLogo1);
holder1.title.setText(list.get(position).getTitle());
holder1.time.setText(list.get(position).getDate());
holder1.author.setText(list.get(position).getAuthor_name());
break;
case TYPE_TWO_PIC:
if (convertView == null){
holder2 = new ViewHolder2();
convertView = View.inflate(context,R.layout.news2,null);
holder2.title = convertView.findViewById(R.id.title);
holder2.time = convertView.findViewById(R.id.time);
holder2.author = convertView.findViewById(R.id.author);
holder2.imageLogo1 = convertView.findViewById(R.id.imageLogo1);
holder2.imageLogo2 = convertView.findViewById(R.id.imageLogo2);
convertView.setTag(holder2);
}else {
holder2 = (ViewHolder2) convertView.getTag();
}
holder2.title.setText(list.get(position).getTitle());
holder2.time.setText(list.get(position).getDate());
holder2.author.setText(list.get(position).getAuthor_name());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder2.imageLogo1);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder2.imageLogo2);
break;
case TYPE_THREE_PIC:
if (convertView == null){
holder3 = new ViewHolder3();
convertView = View.inflate(context,R.layout.news3,null);
holder3.title = convertView.findViewById(R.id.title);
holder3.time = convertView.findViewById(R.id.time);
holder3.author = convertView.findViewById(R.id.author);
holder3.imageLogo1 = convertView.findViewById(R.id.imageLogo1);
holder3.imageLogo2 = convertView.findViewById(R.id.imageLogo2);
holder3.imageLogo3 = convertView.findViewById(R.id.imageLogo3);
convertView.setTag(holder3);
}else {
holder3 = (ViewHolder3) convertView.getTag();
}
holder3.title.setText(list.get(position).getTitle());
holder3.time.setText(list.get(position).getDate());
holder3.author.setText(list.get(position).getAuthor_name());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder3.imageLogo1);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder3.imageLogo2);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder3.imageLogo3);
break;
}
return convertView;
}
class ViewHolder1{
TextView title;
TextView author;
TextView time;
ImageView imageLogo1;
}
class ViewHolder2{
TextView title;
TextView author;
TextView time;
ImageView imageLogo1;
ImageView imageLogo2;
}
class ViewHolder3{
TextView title;
TextView author;
TextView time;
ImageView imageLogo1;
ImageView imageLogo2;
ImageView imageLogo3;
}
}
news3.xml
<?xml version="1.0" encoding="utf-8"?> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:id="@+id/title"
android:text="Title"
android:textSize="16dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/author"
android:layout_marginTop="10dp"
android:text="author"/>
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/time"
android:text="time"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageLogo1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="120dp" />
<ImageView
android:id="@+id/imageLogo2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="120dp" />
<ImageView
android:id="@+id/imageLogo3"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="120dp" />
</LinearLayout>
## TwoActivity package com.bwie.a20181019_a;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
public class TwoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//找控件
TextView title = findViewById(R.id.title);
TextView author = findViewById(R.id.author);
TextView time = findViewById(R.id.time);
ImageView image1 = findViewById(R.id.image1);
ImageView image2 = findViewById(R.id.image2);
ImageView image3 = findViewById(R.id.image3);
Intent intent = getIntent();
title.setText(intent.getStringExtra("title"));
author.setText(intent.getStringExtra("author"));
time.setText(intent.getStringExtra("time"));
//image1.setImageResource(intent.getStringExtra("image1"));
String aimage1 = intent.getStringExtra("image1");
String aimage2 = intent.getStringExtra("image2");
String aimage3 = intent.getStringExtra("image3");
ImageLoader.getInstance().displayImage(aimage1,image1);
ImageLoader.getInstance().displayImage(aimage2,image2);
ImageLoader.getInstance().displayImage(aimage3,image3);
}
}