//main
package month.com.month;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import fragment.LianFragment;
import fragment.ShouFragment;
import fragment.WoFragment;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private RadioGroup main_radioGroup;
private List<Fragment> list;
private FragmentManager supportFragmentManager;
private ShouFragment shouFragment;
private LianFragment lianFragment;
private WoFragment woFragment;
private FragmentTransaction transaction;
private Button sbtn1;
private Button sbtn2;
private Button sbtn3;
private DrawerLayout drawer_layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
sbtn1 = findViewById(R.id.sbtn1);
sbtn2 = findViewById(R.id.sbtn2);
sbtn3 = findViewById(R.id.sbtn3);
drawer_layout = findViewById(R.id.drawer_layout);
main_radioGroup = findViewById(R.id.main_radioGroup);
//获取Fragment管理者
supportFragmentManager = getSupportFragmentManager();
list=new ArrayList<>();
//默认选中首页
main_radioGroup.check(R.id.btn1);
shouFragment = new ShouFragment();
list.add(shouFragment);
getFragment(shouFragment,true);
main_radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.btn1:
getFragment(shouFragment,false);
break;
case R.id.btn2:
if (lianFragment==null){
lianFragment = new LianFragment();
list.add(lianFragment);
getFragment(lianFragment,true);
}else{
getFragment(lianFragment,false);
}
break;
case R.id.btn3:
if (woFragment==null){
woFragment = new WoFragment();
list.add(woFragment);
getFragment(woFragment,true);
}else {
getFragment(woFragment,false);
}
break;
}
}
});
sbtn1.setOnClickListener(this);
sbtn2.setOnClickListener(this);
sbtn3.setOnClickListener(this);
}
/**
* 动态显示Fragment
* @param showFragment 要增加的fragment
* @param b true:增加fragment;false:切换fragment
*/
private void getFragment(Fragment showFragment, boolean b) {
transaction = supportFragmentManager.beginTransaction();
if (b){
transaction.add(R.id.main_fragment,showFragment);
}
for (Fragment fragment:list){
if (showFragment.equals(fragment)){
transaction.show(fragment);
}else{
transaction.hide(fragment);
}
}
transaction.commit();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.sbtn1:
getFragment(shouFragment,false);
drawer_layout.closeDrawers();
break;
case R.id.sbtn2:
if (lianFragment==null){
lianFragment = new LianFragment();
list.add(lianFragment);
getFragment(lianFragment,true);
drawer_layout.closeDrawers();
}else{
getFragment(lianFragment,false);
drawer_layout.closeDrawers();
}
break;
case R.id.sbtn3:
if (woFragment==null){
woFragment = new WoFragment();
list.add(woFragment);
getFragment(woFragment,true);
drawer_layout.closeDrawers();
}else {
getFragment(woFragment,false);
drawer_layout.closeDrawers();
}
break;
}
}
}
//main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:id="@+id/main_fragment"
></FrameLayout>
<RadioGroup
android:id="@+id/main_radioGroup"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
>
<RadioButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/btn1"
android:gravity="center"
android:text="首页"
android:button="@null"
/>
<RadioButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/btn2"
android:gravity="center"
android:text="联系人"
android:button="@null"
/>
<RadioButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/btn3"
android:gravity="center"
android:text="我的"
android:button="@null"
/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f00"
android:layout_gravity="start"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sbtn1"
android:layout_gravity="center"
android:text="首页"
android:button="@null"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sbtn2"
android:layout_gravity="center"
android:text="联系人"
android:button="@null"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sbtn3"
android:layout_gravity="center"
android:text="我的"
android:button="@null"
/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
//oneFragment
package fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioGroup;
import java.util.ArrayList;
import java.util.List;
import adapter.Myadapter;
import month.com.month.R;
public class ShouFragment extends Fragment {
private ViewPager view_page;
private RadioGroup shou_viewGroup;
private List<Fragment> list;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.item1, container, false);
view_page = view.findViewById(R.id.view_page);
shou_viewGroup = view.findViewById(R.id.shou_viewGroup);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
list =new ArrayList<>();
list.add(new YaoFragmwnt());
list.add(new GuoFragmwnt());
list.add(new JunFragmwnt());
view_page.setAdapter(new Myadapter(getChildFragmentManager(),list));
view_page.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
shou_viewGroup.check(shou_viewGroup.getChildAt(i).getId());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
shou_viewGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.shou_btn1:
view_page.setCurrentItem(0);
break;
case R.id.shou_btn2:
view_page.setCurrentItem(1);
break;
case R.id.shou_btn3:
view_page.setCurrentItem(2);
break;
}
}
});
}
}
//Shouadapter
package adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import java.util.List;
public class Myadapter extends FragmentPagerAdapter {
private List<Fragment> list;
public Myadapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
}
//onefragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/shou_viewGroup"
android:orientation="horizontal"
>
<RadioButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/shou_btn1"
android:text="要闻"
android:button="@null"
android:gravity="center"
android:background="@drawable/radio"
android:checked="true"
/>
<RadioButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/shou_btn2"
android:text="国际"
android:button="@null"
android:gravity="center"
android:background="@drawable/radio"
/>
<RadioButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/shou_btn3"
android:text="军事"
android:button="@null"
android:gravity="center"
android:background="@drawable/radio"
/>
</RadioGroup>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@+id/view_page"
android:layout_weight="9"
>
</android.support.v4.view.ViewPager>
</LinearLayout>
//YaoFragment
package fragment;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import java.util.List;
import adapter.YaoAdapter;
import bean.BeanNews;
import month.com.month.R;
import network.HttpWork;
import xlistview.XListView;
@SuppressLint("ValidFragment")
class YaoFragmwnt extends Fragment implements XListView.IXListViewListener {
private XListView xlist_view;
private List<BeanNews.DataBean> data;
private int page=1;
private YaoAdapter yaoAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.item4, container, false);
xlist_view = view.findViewById(R.id.xlist_view);
xlist_view.setXListViewListener(this);
xlist_view.setPullLoadEnable(true);
xlist_view.setPullRefreshEnable(true);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
creates();
}
public void onRefresh(){
page=1;
new Runnable() {
@Override
public void run() {
creates();
yaoAdapter.notifyDataSetChanged();
}
}.run();
stop();
}
@Override
public void onLoadMore() {
page++;
new Runnable() {
@Override
public void run() {
creates();
yaoAdapter.notifyDataSetChanged();
}
}.run();
stop();
}
public void stop(){
xlist_view.stopRefresh();
xlist_view.stopLoadMore();
}
private void creates() {
new MyAsnc().execute();
}
private class MyAsnc extends AsyncTask<Integer,Integer,String> {
String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
@Override
protected String doInBackground(Integer... integers) {
return HttpWork.gethttpwork(path,"GET");
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("sss", "onPostExecute: "+s);
if (s!=null){
Gson gson=new Gson();
BeanNews beanNews = gson.fromJson(s, BeanNews.class);
data = beanNews.getData();
yaoAdapter = new YaoAdapter(getActivity(), data);
xlist_view.setAdapter(yaoAdapter);
}
}
}
}
//yaoFragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<xlistview.XListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/xlist_view"
>
</xlistview.XListView>
</LinearLayout>
//yao-adapter
package adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
import bean.BeanNews;
import month.com.month.R;
public class YaoAdapter extends BaseAdapter {
private Context context;
private List<BeanNews.DataBean> data;
public YaoAdapter(Context context, List<BeanNews.DataBean> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView==null){
convertView=View.inflate(context, R.layout.yao_layout,null);
viewHolder=new ViewHolder();
viewHolder.text1=convertView.findViewById(R.id.text1);
viewHolder.text2=convertView.findViewById(R.id.text2);
viewHolder.image1=convertView.findViewById(R.id.image1);
convertView.setTag(viewHolder);
}else{
viewHolder= (ViewHolder) convertView.getTag();
}
viewHolder.text1.setText(data.get(position).getNews_title());
viewHolder.text2.setText(data.get(position).getNews_summary());
ImageLoader.getInstance().displayImage(data.get(position).getPic_url(),viewHolder.image1);
return convertView;
}
class ViewHolder{
TextView text1,text2;
ImageView image1;
}
}
//多条目
package bw.com.ak.adapter;
import android.content.Context;
import android.view.LayoutInflater;
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 bw.com.ak.R;
public class ShopAdapte extends BaseAdapter {
Context context;
ShopBean.ResultBean focusBean;
LayoutInflater mInflater;
final int TYPE0 = 0;
final int TYPE1 = 1;
public ShopAdapte(Context context) {
this.context = context;
}
public ShopAdapte(Context context, ShopBean.ResultBean focusBean){
this.context=context;
this.focusBean=focusBean;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return focusBean.getData().size();
}
@Override
public Object getItem(int position) {
return focusBean.getData().get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//获取条目类型
@Override
public int getItemViewType(int position) {
switch (position){
case 0:
return TYPE0;
case 1:
return TYPE1;
default:
}
return position%2;
}
//条目类型数量
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ShopAdapte.ViewHolder holder = null;
int type = getItemViewType(position);
holder= new ShopAdapte.ViewHolder();
if (convertView == null) {
switch (type){
case TYPE0:
convertView=View.inflate(context,R.layout.item_listview,null);
holder.leftimageView = convertView.findViewById(R.id.lf_imageView);
holder.lefttv1 = convertView.findViewById(R.id.lf_textView1);
holder.lefttv2 = convertView.findViewById(R.id.lf_textView2);
convertView.setTag(holder);
break;
case TYPE1:
convertView=View.inflate(context,R.layout.item_listviewr,null);
holder.rightimageView = convertView.findViewById(R.id.rt_imageView);
holder.rttv1 = convertView.findViewById(R.id.rt_textView);
holder.rttv2 = convertView.findViewById(R.id.rt_textView4);
convertView.setTag(holder);
break;
}
} else { //else里面说明,convertView已经被复用了,说明convertView中已经设置过tag了,即holder
holder = (ShopAdapte.ViewHolder) convertView.getTag();
}
switch (type){
case 0:
ImageLoader.getInstance().displayImage(focusBean.getData().get(position).getThumbnail_pic_s(),holder.leftimageView);
holder.lefttv1.setText(focusBean.getData().get(position).getTitle());
holder.lefttv2.setText(focusBean.getData().get(position).getDate());
return convertView;
case 1:
holder.rttv1.setText(focusBean.getData().get(position).getTitle());
holder.rttv2.setText(focusBean.getData().get(position).getDate());;
return convertView;
default:
}
return convertView;
}
private class ViewHolder {
TextView lefttv1,lefttv2,textView3,rttv1,rttv2;
ImageView leftimageView,rightimageView;
}
}
//yaodapter.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/image1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1"
android:layout_toRightOf="@id/image1"
android:layout_alignTop="@id/image1"
android:text="22"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text2"
android:layout_toRightOf="@id/image1"
android:layout_alignBottom="@id/image1"
android:text="11"
/>
</RelativeLayout>
//JunFragment
package fragment;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import java.util.List;
import adapter.YaoAdapter;
import bean.BeanNews;
import month.com.month.R;
import network.HttpWork;
import xlistview.XListView;
@SuppressLint("ValidFragment")
class JunFragmwnt extends Fragment implements XListView.IXListViewListener {
private XListView xlist_view;
private int page=1;
private YaoAdapter yaoAdapter;
private List<BeanNews.DataBean> data;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.item6, container, false);
xlist_view = view.findViewById(R.id.xlist_view);
xlist_view.setXListViewListener(this);
xlist_view.setPullLoadEnable(true);
xlist_view.setPullRefreshEnable(true);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
creates();
}
public void onRefresh(){
page=1;
new Runnable() {
@Override
public void run() {
creates();
yaoAdapter.notifyDataSetChanged();
}
}.run();
stop();
}
@Override
public void onLoadMore() {
page++;
new Runnable() {
@Override
public void run() {
creates();
yaoAdapter.notifyDataSetChanged();
}
}.run();
stop();
}
public void stop(){
xlist_view.stopRefresh();
xlist_view.stopLoadMore();
}
private void creates() {
new MyAsnc().execute();
}
private class MyAsnc extends AsyncTask<Integer,Integer,String> {
String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/3";
@Override
protected String doInBackground(Integer... integers) {
return HttpWork.gethttpwork(path,"GET");
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("sss", "onPostExecute: "+s);
if (s!=null){
Gson gson=new Gson();
BeanNews beanNews = gson.fromJson(s, BeanNews.class);
data = beanNews.getData();
yaoAdapter = new YaoAdapter(getActivity(), data);
xlist_view.setAdapter(yaoAdapter);
}
}
}
}
//junFragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<xlistview.XListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/xlist_view"
>
</xlistview.XListView>
</LinearLayout>
//appliction
package application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class Application extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration builder = new ImageLoaderConfiguration.Builder(this)
.memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
.diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
.diskCacheFileCount(100) // 可以缓存的文件数量
.diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
.defaultDisplayImageOptions(Options())
.build();
ImageLoader.getInstance().init(builder);
}
private DisplayImageOptions Options(){
return new DisplayImageOptions.Builder()
.showStubImage(R.mipmap.bw_er)//缓冲过程中图片
.showImageForEmptyUri(R.mipmap.bw_empty)// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.mipmap.bw_wf)// 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true)//缓存道内存
.cacheOnDisc(true)//缓存到硬盘
.bitmapConfig(Bitmap.Config.ARGB_8888) //设置图片的解码类型
// .displayer(new RoundedBitmapDisplayer(30,10))//圆角
.displayer(new CircleBitmapDisplayer(Color.RED, 10))//圆形
.build();
}
}