Listview添加头和尾,addHeader,addFooter,以及利用尾显示更新过程

来源:互联网 发布:拍照软件mix 编辑:程序博客网 时间:2024/06/06 06:44

首先说一下,因为头和尾都是独立的xml,而且并没有在xml总进行include,所以这里实例化的话会稍微麻烦一点,上代码

private void initView() {        scorll_linearlayout = (LinearLayout) getActivity().findViewById(R.id.scorll_linearlayout);        index_indicator_background = (LinearLayout) getActivity().findViewById(R.id.index_indicator_background);        ptrl = ((PullToRefreshLayout) getActivity().findViewById(R.id.refresh_homepage_view));        ptrl.setOnRefreshListener(new MyListener());        listView = (ListView) getActivity().findViewById(R.id.homepage_listview);        indexListViewAdapter = new IndexListViewAdapter(getActivity(), indexListViewBeanList);        indexListViewAdapter.update();        listView.addHeaderView(LayoutInflater.from(getActivity()).inflate(R.layout.item_index_header, null));        listview_inflater=LayoutInflater.from(getActivity());        item_listview_footer=listview_inflater.inflate(R.layout.item_listview_footer, null);        listView.addFooterView(item_listview_footer);        listview_progress=(ProgressBar)item_listview_footer.findViewById(R.id.listview_progress);        listview_footer = (TextView) item_listview_footer.findViewById(R.id.listview_footer);        ((TextView) item_listview_footer.findViewById(R.id.listview_footer)).setText("上拉加载更多");        listView.setAdapter(indexListViewAdapter);        listView.setFocusable(true);        listView.setOnItemClickListener(new IndexOnItemClickListener());        index_record = (ImageView) getActivity().findViewById(R.id.index_record);        index_record.setOnClickListener(this);    }
下面是头的操作

Handler handler3 = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                case 0:                    jsonArray = (JSONArray) msg.obj;                    L.d("handler中的jsonarray", jsonArray.toString());                    if (jsonArray.length() != 0) {                        for (int i = 0; i < jsonArray.length(); i++) {                            try {                                RollScreenBean rollScreenBean = new RollScreenBean(null, null, null, null, null, null, null, null, null, null);                                JSONObject rollScreenBeanItem = jsonArray.getJSONObject(i);                                rollScreenBean.setIndex(rollScreenBeanItem.getString("index"));                                rollScreenBean.setRollScreenTitle(rollScreenBeanItem.getString("rollscreen_title"));                                rollScreenBean.setTitle(rollScreenBeanItem.getString("title"));                                rollScreenBean.setRollScreenImage(BaseUrl + rollScreenBeanItem.getString("rollscreen_image"));                                rollScreenBean.setImage(BaseUrl + rollScreenBeanItem.getString("image"));                                rollScreenBean.setVideoId(rollScreenBeanItem.getString("videoid"));                                rollScreenBean.setVideoUrl(rollScreenBeanItem.getString("url"));                                rollScreenBean.setGoodNumber(Integer.parseInt(rollScreenBeanItem.optString("praise_num")) + "");                                rollScreenBean.setCollectNumber(Integer.parseInt(rollScreenBeanItem.optString("collect_num")) + "");                                rollScreenBeanList.add(rollScreenBean);                            } catch (JSONException e) {                                e.printStackTrace();                            }                        }                        try {                            index_view_header = (RelativeLayout) getActivity().findViewById(R.id.index_view_header);                            index_view_header.setVisibility(View.VISIBLE);                        } catch (Exception e) {                            e.getStackTrace();                        }                        initPagerView();                    } else {                        LayoutInflater.from(getActivity()).inflate(R.layout.item_index_header, null).setVisibility(View.GONE);                    }                    break;            }        }    };    private void initPagerView() {        view_pager = (ViewPager) getActivity().findViewById(R.id.index_view_pager);        List<View> list = new ArrayList<View>();        inflater = LayoutInflater.from(getActivity());        for (int i = 0; i < jsonArray.length(); i++) {            item = inflater.inflate(R.layout.item_index_image, null);            ((TextView) item.findViewById(R.id.index_scorll_text)).setText(rollScreenBeanList.get(i).getRollScreenTitle());            ((TextView) item.findViewById(R.id.index_scorll_text)).bringToFront();            list.add(item);        }        adapter = new MyAdapter(list);        view_pager.setAdapter(adapter);        view_pager.setOnPageChangeListener(new ScorllListener());        initIndicator();        ScheduledExecutorService scheduled = Executors.newSingleThreadScheduledExecutor();        ViewPagerTask pagerTask = new ViewPagerTask();        scheduled.scheduleAtFixedRate(pagerTask, 4, 4, TimeUnit.SECONDS);    }    private class ViewPagerTask implements Runnable {        @Override        public void run() {            currPage = (currPage + 1) % jsonArray.length();            handler4.sendEmptyMessage(0);        }    }    Handler handler4 = new Handler() {        public void handleMessage(Message msg) {            view_pager.setCurrentItem(currPage);        }    };    private void initIndicator() {        indicator_imgs = new ImageView[jsonArray.length()];        ImageView imgView;        View v = getActivity().findViewById(R.id.index_indicator);        for (int i = 0; i < jsonArray.length(); i++) {            imgView = new ImageView(getActivity());            LinearLayout.LayoutParams params_linear = new LinearLayout.LayoutParams(15, 15);            params_linear.setMargins(10, 15, 10, 15);            imgView.setLayoutParams(params_linear);            indicator_imgs[i] = imgView;            if (i == 0) {                indicator_imgs[i].setBackgroundResource(R.drawable.indicator_focused);            } else {                indicator_imgs[i].setBackgroundResource(R.drawable.indicator);            }            ((ViewGroup) v).addView(indicator_imgs[i]);        }    }    private class MyAdapter extends PagerAdapter {        private List<View> mList;        private AsyncImageLoader asyncImageLoader;        public MyAdapter(List<View> list) {            mList = list;            asyncImageLoader = new AsyncImageLoader();        }        @Override        public int getCount() {            return mList.size();        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(mList.get(position));        }        @Override        public boolean isViewFromObject(View arg0, Object arg1) {            return arg0 == arg1;        }        @Override        public Object instantiateItem(final ViewGroup container, final int position) {            Drawable cachedImage = asyncImageLoader.loadDrawable(rollScreenBeanList.get(position).getRollScreenImage(), new AsyncImageLoader.ImageCallback() {                public void imageLoaded(Drawable imageDrawable, String imageUrl) {                    View view = mList.get(position);                    image = ((ImageView) view.findViewById(R.id.index_scorll_img));                    image.setBackgroundDrawable(imageDrawable);                    container.removeView(mList.get(position));                    container.addView(mList.get(position));                }            });            View view = mList.get(position);            image = ((ImageView) view.findViewById(R.id.index_scorll_img));            image.setBackgroundDrawable(cachedImage);            image.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Thread oadThread = new Thread(new postThread(rollScreenBeanList.get(position).getVideoId(), "play"));                    oadThread.start();                    Intent intent = new Intent(getActivity(), VideoViewPlayingActivity.class);                    intent.putExtra("url_info", rollScreenBeanList.get(position).getVideoUrl());                    intent.putExtra("id_info", rollScreenBeanList.get(position).getVideoId());                    intent.putExtra("title_info", rollScreenBeanList.get(position).getTitle());                    intent.putExtra("image_info", rollScreenBeanList.get(position).getImage());                    intent.putExtra("good_info", rollScreenBeanList.get(position).getGoodNumber());                    intent.putExtra("collect_info", rollScreenBeanList.get(position).getCollectNumber());                    startActivity(intent);                }            });            container.removeView(mList.get(position));            container.addView(mList.get(position));            return mList.get(position);        }    }    private class ScorllListener implements ViewPager.OnPageChangeListener {        @Override        public void onPageScrollStateChanged(int state) {            if (state == 0) {            }        }        @Override        public void onPageScrolled(int arg0, float arg1, int arg2) {        }        @Override        public void onPageSelected(int position) {            for (int i = 0; i < indicator_imgs.length; i++) {                indicator_imgs[i].setBackgroundResource(R.drawable.indicator);            }            indicator_imgs[position].setBackgroundResource(R.drawable.indicator_focused);        }    }    static class AsyncImageLoader {        private HashMap<String, SoftReference<Drawable>> imageCache;        public AsyncImageLoader() {            imageCache = new HashMap<String, SoftReference<Drawable>>();        }        public interface ImageCallback {            public void imageLoaded(Drawable imageDrawable, String imageUrl);        }        public Drawable loadDrawable(final String imageUrl, final ImageCallback imageCallback) {            if (imageCache.containsKey(imageUrl)) {                SoftReference<Drawable> softReference = imageCache.get(imageUrl);                Drawable drawable = softReference.get();                if (drawable != null) {                    imageCallback.imageLoaded(drawable, imageUrl);                    return drawable;                }            }            final Handler handler = new Handler() {                public void handleMessage(Message message) {                    imageCallback.imageLoaded((Drawable) message.obj, imageUrl);                }            };            new Thread() {                @Override                public void run() {                    Drawable drawable = loadImageFromUrl(imageUrl);                    imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));                    Message message = handler.obtainMessage(0, drawable);                    handler.sendMessage(message);                }            }.start();            return null;        }        public Drawable loadImageFromUrl(String url) {            try {                HttpClient client = new DefaultHttpClient();                client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 1000 * 15);                HttpGet get = new HttpGet(url);                HttpResponse response;                response = client.execute(get);                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {                    HttpEntity entity = response.getEntity();                    Drawable d = Drawable.createFromStream(entity.getContent(), "src");                    return d;                } else {                    return null;                }            } catch (ClientProtocolException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        public void clearCache() {            if (this.imageCache.size() > 0) {                this.imageCache.clear();            }        }    }
下面是尾的操作

public void onLoadMore(final PullToRefreshLayout pullToRefreshLayout) {            new Handler() {                @Override                public void handleMessage(Message msg) {                    Thread lodeMore = new Thread(new LoadMore());                    lodeMore.start();                    listview_progress.setVisibility(View.VISIBLE);                    listview_footer.setText("正在加载中。。。");                    handler1 = new Handler() {                        @Override                        public void handleMessage(Message msg) {                            super.handleMessage(msg);                            switch (msg.what) {                                case 0:                                    if (!msg.obj.equals("0") && !msg.equals(MaxId)) {                                        indexUrlBeanList.addAll(indexUrlBeanList_more);                                        L.d("indexurlbeanlist的长度", indexUrlBeanList.size() + "");                                        L.d(indexUrlBeanList.toString());                                        indexListViewBeanList.addAll(indexListViewBeanList_loadmore);                                        indexListViewAdapter.update();                                        listview_progress.setVisibility(View.GONE);                                        listview_footer.setText("上拉加载");                                        pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED);                                    }                                    break;                                case 1:                                    pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.FAIL);                                    listview_footer.setText("请检查网络状态");                                    T.showShort(getActivity(), "请检查网络状态");                                    break;                            }                        }                    };                }            }.sendEmptyMessageDelayed(0, 500);

说一下其中的重点在哪

listview_inflater=LayoutInflater.from(getActivity());        item_listview_footer=listview_inflater.inflate(R.layout.item_listview_footer, null);        listView.addFooterView(item_listview_footer);        listview_progress=(ProgressBar)item_listview_footer.findViewById(R.id.listview_progress);        listview_footer = (TextView) item_listview_footer.findViewById(R.id.listview_footer);        ((TextView) item_listview_footer.findViewById(R.id.listview_footer)).setText("上拉加载更多");

需要自己去定义一个view,还有layoutinflater,然后在此基础上进行界面的更新操作



0 0
原创粉丝点击