一
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dl"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_bottom"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txt_concern"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="5dp"
android:text="关注" />
<TextView
android:id="@+id/txt_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="5dp"
android:text="消息" />
<TextView
android:id="@+id/txt_my"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:layout_gravity="center"
android:padding="5dp"
android:text="我的" />
</LinearLayout>
<FrameLayout
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/ll_bottom"></FrameLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffff"
android:orientation="vertical"
>
<ListView
android:id="@+id/lv_drawer"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
二
第一个fragment的xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.bwie.xlistview.XListView
android:id="@+id/xlistview"
android:layout_width="match_parent"
android:layout_height="wrap_content"></com.bwie.xlistview.XListView>
</LinearLayout>
三
package com.example.newsmonth1;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bwie.xlistview.XListView;
import com.google.gson.Gson;
import java.nio.FloatBuffer;
import java.util.ArrayList;
import java.util.List;
public class ContentFragment extends BaseFragment {
Handler handler=new Handler();
private XListView xListView;
private List<News.DataBean> list;
private NewsAdapter adapter;
private int page=1;
@Override
protected void initView(View v) {
xListView = v.findViewById(R.id.xlistview);
}
@Override
protected void initData() {
super.initData();
list = new ArrayList<>();
adapter = new NewsAdapter(getActivity(), list);
xListView.setAdapter(adapter);
xListView.setPullRefreshEnable(true);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page=1;
getData(page,false);
}
@Override
public void onLoadMore() {
page++;
getData(page,true);
}
});
getData(1,false);
}
private void getData(int i, final boolean b) {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... strings) {
String result=HttpUtils.getHttpFroment(strings[0]);
return result;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(!TextUtils.isEmpty(s)){
Gson gson=new Gson();
News news=gson.fromJson(s,News.class);
if(news.getData()!=null){
if(!b){
list.clear();
}
list.addAll(news.getData());
adapter.notifyDataSetChanged();
}
}
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(b){
xListView.stopLoadMore();
}else{
xListView.stopRefresh();
xListView.setRefreshTime("刚刚");
}
}
},2000);
}
}.execute("http://www.xieast.com/api/news/news.php?page="+page);
}
@Override
protected int getContentView() {
return R.layout.fragment_content;
}
}
四
新闻类的适配器
package com.example.newsmonth1;
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 。。。。 on 2018/9/17.
*/
public class NewsAdapter extends BaseAdapter {
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_s03())){
return 2;
}else if(!TextUtils.isEmpty(bean.getThumbnail_pic_s02())){
return 1;
}else{
return 0;
}
}
@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 0:
if(convertView==null){
holder1=new ViewHolder1();
convertView=View.inflate(context,R.layout.item_news_01,null);
holder1.title=convertView.findViewById(R.id.title);
holder1.img1=convertView.findViewById(R.id.img1);
convertView.setTag(holder1);
}else {
holder1= (ViewHolder1) convertView.getTag();
}
holder1.title.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder1.img1);
break;
case 1:
if(convertView==null){
holder2=new ViewHolder2();
convertView=View.inflate(context,R.layout.item_news_02,null);
holder2.title=convertView.findViewById(R.id.title);
holder2.img1=convertView.findViewById(R.id.img1);
holder2.img2=convertView.findViewById(R.id.img2);
convertView.setTag(holder2);
}else {
holder2= (ViewHolder2) convertView.getTag();
}
holder2.title.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder2.img1);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder2.img2);
break;
case 2:
if(convertView==null){
holder3=new ViewHolder3();
convertView=View.inflate(context,R.layout.item_news_03,null);
holder3.title=convertView.findViewById(R.id.title);
holder3.img1=convertView.findViewById(R.id.img1);
holder3.img2=convertView.findViewById(R.id.img2);
holder3.img3=convertView.findViewById(R.id.img3);
convertView.setTag(holder3);
}else {
holder3= (ViewHolder3) convertView.getTag();
}
holder3.title.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder3.img1);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder3.img2);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder3.img3);
break;
}
return convertView;
}
class ViewHolder1{
TextView title;
ImageView img1;
}
class ViewHolder2{
TextView title;
ImageView img1;
ImageView img2;
}
class ViewHolder3{
TextView title;
ImageView img1;
ImageView img2;
ImageView img3;
}
}
五
鸡肋
package com.example.newsmonth1;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
/**
* Created by 。。。。 on 2018/9/17.
*/
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
previewAction();
setContentView(getContentView());
initView();
initData();
setListener();
setMoreAction();
}
protected void setMoreAction() {
}
protected void setListener() {
}
protected void initData() {
}
protected abstract void initView();
protected abstract int getContentView();
protected void previewAction() {
}
}
六
鸡肋
package com.example.newsmonth1;
import android.content.Context;
import android.os.Bundle;
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;
/**
* Created by 。。。。 on 2018/9/17.
*/
public abstract class BaseFragment extends Fragment {
protected Context context;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(getContentView(),container,false);
initView(v);
return v;
}
protected abstract void initView(View v);
protected abstract int getContentView();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(context==null){
context=getActivity();
initData();
setlistener();
setMoreAction();
}
}
protected void setMoreAction() {
}
protected void setlistener() {
}
protected void initData() {
}
}
七
imageloder
package com.example.newsmonth1;
import android.app.Application;
import android.graphics.Bitmap;
import android.os.Environment;
import com.nostra13.universalimageloader.cache.disc.DiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.File;
import java.io.IOException;
/**
* Created by 。。。。 on 2018/9/17.
*/
public class BaseAppliction extends Application {
private File file;
@Override
public void onCreate() {
super.onCreate();
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File rootSD=Environment.getExternalStorageDirectory();
file = new File(rootSD,"imgs");
if(!file.exists()){
file.mkdirs();
}
}
try {
DiskCache diskCache=new LruDiskCache(file,new Md5FileNameGenerator(),50*1024*1024);
DisplayImageOptions options=new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
.diskCache(diskCache)
.defaultDisplayImageOptions(options)
.build();
ImageLoader.getInstance().init(configuration);
} catch (IOException e) {
e.printStackTrace();
}
}
}
八
主页面
package com.example.newsmonth1;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends BaseActivity implements View.OnClickListener {
private ListView lvdrawer;
private TextView txtcontent;
private TextView txtmessage;
private TextView txtMy;
private List<String> list;
private DrawerLayout dl;
private ContentFragment contentFragment;
private MessageFragment messageFragment;
private MyFragment myFragment;
private FragmentManager manager;
private LeftDrawerAdapter adapter;
@Override
protected int getContentView() {
return R.layout.activity_main;
}
@Override
protected void initView() {
dl = findViewById(R.id.dl);
lvdrawer = findViewById(R.id.lv_drawer);
txtcontent = findViewById(R.id.txt_concern);
txtmessage = findViewById(R.id.txt_message);
txtMy = findViewById(R.id.txt_my);
}
@Override
protected void initData() {
super.initData();
list = new ArrayList<>();
list.add("所有收件箱");
list.add("所有未读");
list.add("所有红旗");
adapter = new LeftDrawerAdapter(this,list);
lvdrawer.setAdapter(adapter);
contentFragment = new ContentFragment();
messageFragment = new MessageFragment();
myFragment = new MyFragment();
manager = getSupportFragmentManager();
manager.beginTransaction()
.add(R.id.fl_content,contentFragment)
.add(R.id.fl_content,messageFragment)
.add(R.id.fl_content,myFragment)
.hide(messageFragment)
.hide(myFragment)
.commit();
}
@Override
protected void setListener() {
super.setListener();
txtcontent.setOnClickListener(this);
txtmessage.setOnClickListener(this);
txtMy.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.txt_concern:
manager.beginTransaction()
.show(contentFragment)
.hide(messageFragment)
.hide(myFragment)
.commit();
break;
case R.id.txt_message:
manager.beginTransaction()
.hide(contentFragment)
.show(messageFragment)
.hide(myFragment)
.commit();
break;
case R.id.txt_my:
manager.beginTransaction()
.hide(contentFragment)
.hide(messageFragment)
.show(myFragment)
.commit();
break;
}
}
}
九
侧滑list的适配器
package com.example.newsmonth1;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
/**
* Created by 。。。。 on 2018/9/17.
*/
public class LeftDrawerAdapter extends BaseAdapter {
private Context context;
private List<String> list;
public LeftDrawerAdapter(Context context, List<String> 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 View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
holder=new ViewHolder();
convertView=View.inflate(context,R.layout.item_drawer,null);
holder.txttitle=convertView.findViewById(R.id.txt_left_title);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
holder.txttitle.setText(list.get(position));
return convertView;
}
class ViewHolder{
TextView txttitle;
}
}