学习Android之旅第一篇:
有很多人都在询问ListView和PullToRefreshListView的区别,大家对于ListView并不陌生,而PullToRefreshListView或许还没使用过,其实在listview 的基础上它集成了下拉刷新,底部加载等功能,使用起来更加方便。话不多说,上代码:
导入jar包在这就不多做介绍了,这篇文章来自当前正在开发的一个项目里,某些部分做了隐藏处理,请大家谅解,不太明白的地方欢迎留言!!!
xml布局:
<com.zmy.android.pulltorefresh.PullToRefreshListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="@color/white" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:scrollbars="vertical|none" android:divider="@color/divgray" android:dividerHeight="0.3dp" android:smoothScrollbar="true"> </com.zmy.pulltorefresh.PullToRefreshListView>
Java文件:
定义控件,在此定义了一个适配器(介绍完控件在介绍适配器的使用)。
private PullToRefreshListView mlv_list_goods; //数据展示控件 private ConcernGoodsAdapter adapter_goods; //收藏数据适配器
找控件,并且对适配器进行初始化,list_goods所代表将要在控件里面显示的数据,是一个list集合,list集合里面放的map:
mlv_list_goods = (PullToRefreshListView) rootView.findViewById(R.id.listview); mlv_list_goods.setMode(PullToRefreshBase.Mode.PULL_FROM_START); //下拉刷新的方式 adapter_goods = new ConcernGoodsAdapter(mActivity, list_goods); mlv_list_goods.setAdapter(adapter_goods);
ConcernGoodsAdapter:
/** * 我的收藏商品列表适配器 */ public class ConcernGoodsAdapter extends BaseAdapter { private List list; private LayoutInflater inflater; private BaseActivity mActivity; Dialog alertDialog; public ConcernGoodsAdapter(BaseActivity mActivity, List list) { this.list = list; this.mActivity = mActivity; inflater = (LayoutInflater) mActivity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount() { return list.size(); } public Object getItem(int i) { return i; } public long getItemId(int i) { return i; } public View getView(final int i, View view, ViewGroup viewGroup) { ViewHolderGoods holder = null; if (view == null) { holder = new ViewHolderGoods(); view = inflater.inflate(R.layout.item_concern_goods, null); holder.teImageView2 = (SimpleDraweeView) view.findViewById(R.id.iv_item2); holder.tv_name = (TextView) view.findViewById(R.id.tv_shopname2); holder.tv_info = (TextView) view.findViewById(R.id.tv_shopinfo2); holder.ll_goodsItem = (LinearLayout) view.findViewById(R.id.ll_goodsItem); view.setTag(holder); } else { holder = (ViewHolderGoods) view.getTag(); } final Map map = (Map) list.get(i); holder.tv_name.setText(map.get("name").toString()); holder.tv_info.setText("¥" +mActivity.moneytodouble( map.get("good_price").toString())); BaseActivity.displayImage(map.get("big_photo").toString(), holder.teImageView2); final String goodId = map.get("goods_id") + ""; final String contern_id = map.get("id") + ""; return view; } public static class ViewHolderGoods { SimpleDraweeView teImageView2; TextView tv_name; TextView tv_info; LinearLayout ll_goodsItem; }
简单的实现,这样就可以了,下拉刷新则需要为PullToRefreshListView实现下拉刷新的监听:
//商品页面下拉刷新操作 mlv_list_goods.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { new AsyncTask<Void, Void, String[]>() { @Override protected String[] doInBackground(Void... voids) { } @Override protected void onPostExecute(String[] result) { super.onPostExecute(result); } }.execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { } });
下拉刷新的操作写在doInbackground()方法里即可,本项目在这里我是对数据进行重新获取的操作,将获取数据操作封装成一个方法,在这里调用即可。
第一篇文章,不足之处请多多指教~~~