1. 程式人生 > >上拉載入,下拉重新整理列表資料,多條目列表,預設圖圓角

上拉載入,下拉重新整理列表資料,多條目列表,預設圖圓角

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>