天天看點

Xlistview上拉加載,下拉重新整理、多條目展示以及擷取系統時間

  • 首先導入依賴:gson、imageLoader
compile ‘com.google.code.gson:gson:’

 compile ‘com.nostra13.universalimageloader:universal-image-loader:’ 
           
  • 在布局檔案中:
<com.bwie.xlistviewlibrary.View.XListView
        android:id="@+id/xlv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="3"
        />
           

子布局。。。。。。。。

  • 然後在activity中處理一些資料。。。。
private int type = ;
private int pages = ;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xlv = (XListView) findViewById(R.id.xlv);

        //加載更多
        xlv.setPullLoadEnable(true);

      //下拉重新整理
        xlv.setPullRefreshEnable(true);

      //給xlistview設定監聽事件
        xlv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
               type = ;

                pages = ;

                new MyTask().execute(path);
            }

            @Override
            public void onLoadMore() {
                type = ;

                pages++;

                new MyTask().execute("http://api.tianapi.com/mobile/?key=d28c274e60a1a76155e97dc199dbfacc&num=10&page="+pages);
            }
        });

        new MyTask().execute(path);
    }
           

自定義一個MyTask類

class MyTask extends AsyncTask<String,String,String> {

        private List<Bean.NewslistBean> newslist;

        @Override
        protected String doInBackground(String... strings) {
            String path = strings[];

            try {
                   /*
                   得到目前需要的path
                    */
                URL url = new URL(path);

                /**
                 * 得到網絡請求
                 */
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();

                /**
                 * 設定延時時間
                 */
                connection.setConnectTimeout();

                //得到請求方式
                connection.setRequestMethod("GET");

                //得到請求碼
                int responseCode = connection.getResponseCode();

                   /*
                     判斷是否請求成功
                    */
                if (responseCode == ) {
                    int len;

                    byte[] b = new byte[ * ];

                    InputStream inputStream = connection.getInputStream();

                    outputStream = new ByteArrayOutputStream();

                    while ((len = inputStream.read(b)) != -) {
                        outputStream.write(b,,len);
                    }
                }

                return outputStream.toString();//傳回資料資訊
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;//傳回空
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            Gson gson = new Gson();

            /**
             * 轉換json串
             */
            Bean json = gson.fromJson(s, Bean.class);

            newslist = json.getNewslist();

            if(type==){
                list.clear();

                list.addAll(newslist);

                MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);

                xlv.setAdapter(adapter1);

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Date date = new Date(System.currentTimeMillis());
                        SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd  HH:mm:ss");
                        String s = format.format(date);
                        xlv.setRefreshTime(s);
                        xlv.stopRefresh();
                    }
                },);
            }else if(type==){
                list.addAll(newslist);

                MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);

                xlv.setAdapter(adapter1);

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        xlv.stopLoadMore();
                    }
                },);
            }

        }
    }
           

自定義一個Adapter進行展示資料

public class MyAdapter extends BaseAdapter {
    Context context;
    List<Bean.NewslistBean> list;
    public MyAdapter(Context context,List<Bean.NewslistBean> list){
        this.context = context;

        this.list=list;
    }

    @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;
    }

/**
* 優化,展示資料 
*  無viewHolder  詳情看部落格的詳細細節
*/
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
       if(i%==){
           if(view==null){
               view = View.inflate(context, R.layout.main_item,null);
           }
               ImageView iv = view.findViewById(R.id.iv);
               TextView tv = view.findViewById(R.id.tv);
               String s = list.get(i).getPicUrl();
               ImageLoader.getInstance().displayImage(s,iv);
               tv.setText(list.get(i).getTitle());
           return view;
       }else{
           if(view==null){
              view = View.inflate(context, R.layout.main_item1,null);
           }

               ImageView iv1 = view.findViewById(R.id.iv1);

               TextView tv1 = view.findViewById(R.id.tv1);

               String s1 = list.get(i).getPicUrl();

               ImageLoader.getInstance().displayImage(s1,iv1);

               tv1.setText(list.get(i).getTitle());

           return view;
       }

    }
}
           

繼續閱讀