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
- Listview添加头和尾,addHeader,addFooter,以及利用尾显示更新过程
- RecyclerView添加addHeader和addFooter方法
- Android 4.4以下ListView addHeader和addFooter放在setAdapter之后导致异常的原因分析和解决
- 给ListView添加头和尾
- ListView的addfooter没显示footer的原因之一
- Picasso加载图片添加请求头addHeader
- 横向ListView(三) —— 添加头/尾视图及居中显示
- ListView添加头布局和脚布局
- ListView添加头布局
- NPOI操作EXCEL 添加报文头(AddHeader)出现下载框
- 自动显示和隐藏头布局的ListView(转)
- ListView添加分段头信息
- android ListView添加头布局
- 添加头、尾和动画的下拉刷新RecyclerView
- iOS 给UIWebView添加头视图和尾视图
- 为RecyclerView添加头视图和尾视图
- 更新过程
- android账本-添加listview,列头
- 黑马程序员_java08_多线程
- 1072. Gas Station (30)
- TestNG 基本注解
- codeforces 392 B. Tower of Hanoi(汉诺塔 DP)
- 简单的35选7彩票系统
- Listview添加头和尾,addHeader,addFooter,以及利用尾显示更新过程
- C++之引用
- 第二周上机实践项目0—宣告“主权”,我想说的话
- 树的直径 hdu 4607
- map插入数据
- MVC模式简要介绍
- win10(win8应该也可以) intellij idea 配置文件移动
- 项目11.2分离整数和小数部分
- Monkey and Banana Hdoj