上拉加载,下拉刷新列表数据,多条目列表,默认图圆角

package yxr.com.wekk2_lixie;
//viewpager+Fragment滑动
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
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.RadioGroup;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends FragmentActivity {
private ViewPager viewPager;
private RadioGroup group;
private List list=new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    viewPager=findViewById(R.id.viewpager);
    group=findViewById(R.id.group);
    list.add(new Fragment1());
    list.add(new Fragment2());
    list.add(new Fragment3());

    viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int i) {
            return list.get(i);
        }

        @Override
        public int getCount() {
            return list.size();
        }
    });
    group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId){
                case R.id.but1:
                    viewPager.setCurrentItem(0);
                    break;
                case R.id.but2:
                    viewPager.setCurrentItem(1);
                    break;
                case R.id.but3:
                    viewPager.setCurrentItem(2);
                    break;
            }
        }
    });
}

}
//实现上拉加载,下拉刷新列表
public class Fragment1 extends Fragment {
String url = “http://api.expoon.com/AppNews/getNewsList/type/1/p/”;
int page;
private XListView xListView;
List<Goods.DataBean> list = new ArrayList<>();
private MAdapter mAdapter;
private ImageLoader imageLoaderInstances;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment1, container, false);
    xListView = view.findViewById(R.id.xlv);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // 开启上拉加载更多功能;
    xListView.setPullLoadEnable(true);
    imageLoaderInstances = ImageLoader.getInstance();
    //配置适配器
    mAdapter = new MAdapter();
    xListView.setAdapter(mAdapter);
    //请求网络数据
    initData(page);

    //实现监听设置上下拉的逻辑
    xListView.setXListViewListener(new XListView.IXListViewListener() {
        //下拉刷新
        @Override
        public void onRefresh() {
            page = 0;
            list.clear();
            initData(page);
        }

        //上拉加载更多;
        @Override
        public void onLoadMore() {
            page++;
       
            initData(page);
        }
    });

}

//请求网络方法
private void initData(int page) {
    String mUrl = url + page;
    new MAsycnTask().execute(mUrl);
}

//配置适配器
private class MAdapter extends BaseAdapter {
    @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 View getView(int position, View convertView, ViewGroup parent) {
        ViewHodler hodler=new ViewHodler();
        if (convertView==null){
            if (convertView==null){
                convertView=View.inflate(getActivity(),R.layout.lv_item,null);
                hodler.imageView=convertView.findViewById(R.id.imageView);
                hodler.textView=convertView.findViewById(R.id.textView);
                convertView.setTag(hodler);
            }else {
                hodler= (ViewHodler) convertView.getTag();
            }
           hodler.textView.setText(list.get(position).getNews_title());
              DisplayImageOptions options = new DisplayImageOptions.Builder()
                //显示效果:圆形   
                    .displayer(new CircleBitmapDisplayer())
                    //圆角
                    .displayer(new RoundedBitmapDisplayer(50))
                    .build();
 //加载图片           imageLoaderInstances.displayImage(list.get(position).getPic_url(),hodler.imageView,options);
        }


        return  convertView;


    }
}
class  ViewHodler{
    ImageView imageView;
    TextView textView;
}


class MAsycnTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... strings) {
        return NetWordUtils.getNetjson(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //解析gson
        Gson gson = new Gson();
        Goods goods = gson.fromJson(s, Goods.class);
        List<Goods.DataBean> data = goods.getData();

        list.addAll(data);
        mAdapter.notifyDataSetChanged();
        xListView.setRefreshTime("刚刚刷新");
        xListView.stopRefresh();//隐藏头
        xListView.stopLoadMore();//隐藏脚


    }
}

}
//实现多条目
public class Fragment2 extends Fragment {
private ListView listView;
String url = “http://api.expoon.com/AppNews/getNewsList/type/1/p/1”;
List<Goods.DataBean> list = new ArrayList<>();
private MAdapter1 mAdapter;
private ImageLoader imageLoaderInstances;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment2, container, false);
    listView = view.findViewById(R.id.listview);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    imageLoaderInstances = ImageLoader.getInstance();
    //配置适配器
    mAdapter = new MAdapter1();
    listView.setAdapter(mAdapter);
    new MAsycnTask1().execute(url);

}
class MAsycnTask1 extends AsyncTask<String, Void, String> {
    
    @Override
    protected String doInBackground(String... strings) {
        return NetWordUtils.getNetjson(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {

        //解析gson
        Gson gson = new Gson();
        Goods goods = gson.fromJson(s, Goods.class);
        List<Goods.DataBean> data = goods.getData();
        list.addAll(data);
        mAdapter.notifyDataSetChanged();

    }
}

//配置适配器
class MAdapter1 extends BaseAdapter {


    @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 2;
    }
    @Override
    public int getItemViewType(int position) {
        return position % 2;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int itemViewType = getItemViewType(position);//得到条目类型标识
        switch (itemViewType ){
            case 0:
                ViewHolder0 holder0=new ViewHolder0();
                if (convertView==null){
                    convertView=View.inflate(getActivity(),R.layout.list_main1,null);
                    holder0.image1=convertView.findViewById(R.id.image1);
                    holder0.text1=convertView.findViewById(R.id.text1);
                    convertView.setTag(holder0);
                }else {
                    holder0= (ViewHolder0) convertView.getTag();
                }
                holder0.text1.setText(list.get(position).getNews_title());
                 DisplayImageOptions options = new DisplayImageOptions.Builder()
                 //显示效果:圆形
                        .displayer(new CircleBitmapDisplayer())
                        //圆角
                        .displayer(new RoundedBitmapDisplayer(50))
                        .build();
			//加载图片                imageLoaderInstances.displayImage(list.get(position).getPic_url(),holder0.imptions);
                break;
            case 1:
                ViewHolder1 holder1=new ViewHolder1();
                if (convertView==null){
                    convertView=View.inflate(getActivity(),R.layout.list_main2,null);

                    holder1.text2=convertView.findViewById(R.id.text2);
                    convertView.setTag(holder1);
                }else {
                    holder1= (ViewHolder1) convertView.getTag();
                }
                holder1.text2.setText(list.get(position).getNews_title());

                break;
        }
        return convertView;
    }
}



class ViewHolder0{
    ImageView image1;
    TextView text1;
}
class ViewHolder1{

    TextView text2;
}

}
//javabean
public class Goods {

/**
 * status : 1
 * info : 获取内容成功
 * data : [{"news_id":"13783","news_title":"广州国际瓦业展新闻发布会于羊城吹响号角","news_summary":"近日,2016第六届中国(广州)国际瓦业交易会暨制瓦工业展\u2022亚太建筑科技论坛新闻发布会新闻发布会在广州军区珠江宾馆隆重召","pic_url":"http://f.expoon.com/sub/news/2016/01/18/341493_230x162_0.jpg"},{"news_id":"13782","news_title":"第二届巴蜀国际艺术博览会将于5月开幕","news_summary":"近日,第二届巴蜀国际艺术博览会新闻发布会在成都环球中心举行。","pic_url":"http://f.expoon.com/sub/news/2016/01/18/257289_230x162_0.jpg"},{"news_id":"13781","news_title":"2016嘉兴农展会 将于1月25日与各位见面!","news_summary":"每年快到农历新年的时候,一年一度的嘉兴农产品展销会一直是忙于制备年货的\u201c马大嫂们\u201d关注的重头戏,因为,在农展会上买年货,","pic_url":"http://f.expoon.com/sub/news/2016/01/18/420724_230x162_0.jpg"},{"news_id":"13778","news_title":"2016上海国际牛仔服装博览会 展会亮点聚集","news_summary":"以凝聚牛仔文化魅力·绽放牛仔时尚光芒为主题,立足于产业基地,面向世界的市场,零距离推介的国际牛仔商贸对接平台\u2014\u20142016","pic_url":"http://f.expoon.com/sub/news/2016/01/15/523104_230x162_0.jpg"},{"news_id":"13777","news_title":"2016濮院国际毛针织博览会接轨上海","news_summary":"从全省首届新市镇商业发展高峰论坛举行到绿色染整新技术论坛召开,从\u201c空中濮院\u201d上线到\u201c云濮院\u201d启动建设,翻看濮院毛博会的年","pic_url":"http://f.expoon.com/sub/news/2016/01/15/616768_230x162_0.jpg"},{"news_id":"13774","news_title":"中国国际互联网+时代博览会八月举办","news_summary":"中国互联网创新与应用领域推广顶级平台---2016中国(北京)国际互联网+时代博览会将于2016年8月4-7日在中国国际","pic_url":"http://f.expoon.com/sub/news/2016/01/15/240947_230x162_0.jpg"},{"news_id":"13773","news_title":"第十七届中国国际糖酒食品交易会新闻发布会","news_summary":"由河南省酒业协会、九州糖酒网共同主办、瑞城展览服务有限公司、玖玖文化传播有限公司承办、贵州省仁怀市酒业协会协办的\u201c201","pic_url":"http://f.expoon.com/sub/news/2016/01/15/894564_230x162_0.jpg"},{"news_id":"13772","news_title":"海峡两岸生态摄影作品展 明日开展","news_summary":"1月16日第三届\u201c海峡两岸生态摄影作品展\u201d将在福州画院(于山白塔寺旁)开幕。开幕式上将同时发行画册\u201c第三届海峡两岸生态摄","pic_url":"http://f.expoon.com/sub/news/2016/01/15/256819_230x162_0.jpg"},{"news_id":"13771","news_title":"第十五届中国梅花蜡梅展览会 后天开幕","news_summary":"近日,编者从鄢陵县人民政府获悉,第十五届中国梅花蜡梅展览会将于1月16日~2月28日在鄢陵县举行。据介绍,本届展览会由中","pic_url":"http://f.expoon.com/sub/news/2016/01/14/814737_230x162_0.jpg"},{"news_id":"13770","news_title":"2016中国加工贸易产品博览会\u200b召开工作督导会","news_summary":"近日,2016中国加工贸易产品博览会筹办工作督导办会议在广东省商务厅召开。会议总结了2016加博会筹办工作进展情况,对下","pic_url":"http://f.expoon.com/sub/news/2016/01/14/290725_230x162_0.jpg"},{"news_id":"13769","news_title":"第12届中国国际房车露营展览会即将召开","news_summary":"近日,第12届中国(北京)国际房车露营展览会(以下简称\u201c房车展\u201d)新闻发布会在北京房车博览中心\u2022房车世界亚特房车展厅隆重","pic_url":"http://f.expoon.com/sub/news/2016/01/14/644294_230x162_0.jpg"},{"news_id":"13767","news_title":"2016中华老字号博览会暨名优精品展9月琶洲举行","news_summary":"在广州市商务委员会、广州市工业和信息化委员会的支持与指导下,由广州岭南国际企业集团有限公司主办的2016中华老字号博览会","pic_url":"http://f.expoon.com/sub/news/2016/01/14/808268_230x162_0.jpg"},{"news_id":"13766","news_title":"2016第二届呼和浩特年货博览会 下周五开幕","news_summary":"由中国国际贸易促进委员会内蒙古委员会、呼和浩特市人民政府、亚泰(国际)贸易展览集团主办的\u201c2016第二届呼和浩特年货博览","pic_url":"http://f.expoon.com/sub/news/2016/01/14/696715_230x162_0.jpg"},{"news_id":"13765","news_title":"体育健康产业博览会 3月即将召开","news_summary":"昨日,编者从重庆国际马拉松赛组委会获悉,为丰富赛事内涵,传承马拉松文化,展示重庆体育事业蓬勃发展,2016年重庆国际马拉","pic_url":"http://f.expoon.com/sub/news/2016/01/14/370873_230x162_0.jpg"},{"news_id":"13764","news_title":"2016第二届海南文博会 文化饕餮盛宴","news_summary":"海南岛自古远离帝都,孤悬海外,历史上常为流放、贬官之地。如今,大家提到海南文化,可能想到的都是阳光、沙滩、椰子、海鲜\u2026\u2026","pic_url":"http://f.expoon.com/sub/news/2016/01/13/394111_230x162_0.jpg"},{"news_id":"13763","news_title":"2016顺德首届年货博览会 豪礼大派送","news_summary":"为推广宣传我国名优产品,繁荣春节市场,满足居民消费需求,培育品牌展会,\u201c2016顺德首届年货博览会\u201d将于1月15日至24","pic_url":"http://f.expoon.com/sub/news/2016/01/13/339687_230x162_0.jpg"},{"news_id":"13762","news_title":"中国长沙首个收藏产业博览会 4月开展","news_summary":"2016年1月12日上午,湖南(长沙)国际收藏产业博览会新闻发布会在长沙召开。\u200b这是我国首次以收藏产业为主题的展会,将促","pic_url":"http://f.expoon.com/sub/news/2016/01/13/548280_230x162_0.jpg"},{"news_id":"13761","news_title":"2016中国·铜川药王山年货博览会即将启幕","news_summary":"大红灯笼高高挂,喜气洋洋过大年。春节的脚步愈来愈近,市民们购买年货已提上日程。好消息传来,\u201c2016中国药王山年货博览会","pic_url":"http://f.expoon.com/sub/news/2016/01/13/851005_230x162_0.jpg"},{"news_id":"13760","news_title":"亚欧博览会招商招展工作 加强互利合作","news_summary":"2016年1月4-8日,新疆国际博览事务局副局长倪汝池率工作组一行五人赴青岛、济南和天津开展第五届中国\u2014亚欧博览会招商招","pic_url":"http://f.expoon.com/sub/news/2016/01/13/947400_230x162_0.jpg"},{"news_id":"13759","news_title":"乐山市第二十届房地产展示交易会","news_summary":"为进一步提升城市吸引力和知名度,促进商品房销售与开发,推动乐山房地产产业结构调整升级和平稳健康发展,1月18日至24日,","pic_url":"http://f.expoon.com/sub/news/2016/01/13/371409_230x162_0.jpg"}]
 */

private int status;
private String info;
private List<DataBean> data;

public int getStatus() {
    return status;
}

public void setStatus(int status) {
    this.status = status;
}

public String getInfo() {
    return info;
}

public void setInfo(String info) {
    this.info = info;
}

public List<DataBean> getData() {
    return data;
}

public void setData(List<DataBean> data) {
    this.data = data;
}

public static class DataBean {
    /**
     * news_id : 13783
     * news_title : 广州国际瓦业展新闻发布会于羊城吹响号角
     * news_summary : 近日,2016第六届中国(广州)国际瓦业交易会暨制瓦工业展•亚太建筑科技论坛新闻发布会新闻发布会在广州军区珠江宾馆隆重召
     * pic_url : http://f.expoon.com/sub/news/2016/01/18/341493_230x162_0.jpg
     */

    private String news_id;
    private String news_title;
    private String news_summary;
    private String pic_url;

    public String getNews_id() {
        return news_id;
    }

    public void setNews_id(String news_id) {
        this.news_id = news_id;
    }

    public String getNews_title() {
        return news_title;
    }

    public void setNews_title(String news_title) {
        this.news_title = news_title;
    }

    public String getNews_summary() {
        return news_summary;
    }

    public void setNews_summary(String news_summary) {
        this.news_summary = news_summary;
    }

    public String getPic_url() {
        return pic_url;
    }

    public void setPic_url(String pic_url) {
        this.pic_url = pic_url;
    }
}

}
public class MApp extends Application{

@Override
public void onCreate() {
    super.onCreate();
//初始化
    ImageLoaderConfiguration configuration = null;
    DisplayImageOptions options = new DisplayImageOptions.Builder().build();
    configuration = new ImageLoaderConfiguration.Builder(this)
            //配置:内存 磁盘 缓存
            //.memoryCache(new LruMemoryCache())
            //.memoryCacheSize()
            //内存缓存大小
            .memoryCacheSizePercentage(10)
            //配置磁盘缓存:目录 文件名生成  大小
            //.diskCache(new LruDiskCache(getCacheDir(), new HashCodeFileNameGenerator(), 10*1024*1024))
            .diskCacheSize(50*1024*1024)
            //线程配置
            //任务优先级配置
            //FIFO
            //加载图片1   2  3  4  5
            //LIFO
            //.tasksProcessingOrder(QueueProcessingType.)
            //默认显示配置
            //.defaultDisplayImageOptions(options)
            .build();
    ImageLoader.getInstance().init(configuration);

}

}
//布局

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="6"
    />
<RadioGroup
    android:id="@+id/group"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/but1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:checked="true"
        android:background="@drawable/selector"
        android:text="首页"/>
    <RadioButton
        android:id="@+id/but2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:background="@drawable/selector"
        android:text="朋友"/>
    <RadioButton
        android:id="@+id/but3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:background="@drawable/selector"
        android:text="我的"/>
</RadioGroup>
//布局 <?xml version="1.0" encoding="utf-8"?> //布局 <?xml version="1.0" encoding="utf-8"?> //布局 <?xml version="1.0" encoding="utf-8"?> //布局 <?xml version="1.0" encoding="utf-8"?>
<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
//布局 <?xml version="1.0" encoding="utf-8"?>
<ImageView
    android:id="@+id/imageView"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:padding="10dp"
   />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_marginLeft="15dp"
    android:layout_marginTop="15dp"
    android:layout_height="wrap_content"
  />
//清单文件 <?xml version="1.0" encoding="utf-8"?>
<application
    android:name=".MApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

猜你喜欢

转载自blog.csdn.net/weixin_44297368/article/details/85773451