RecyclerView
在xml中配置adapterdata variable nameadapter typeRecyclerView.Adapter/ /data RecyclerView adapter{adapter} app:layoutManagerLinearLayoutManager tools:itemCount5 tools:listItemlayout/list_item/嵌套滑动setNestedScrollingEnabled是 Android 中用于控制一个视图View是否启用‌嵌套滑动Nested Scrolling‌功能的方法。核心作用‌启用/禁用嵌套滑动机制‌当设置为true时该视图可以作为“嵌套滑动子视图”NestedScrollingChild与支持嵌套滑动的父容器如NestedScrollView、CoordinatorLayout等协同处理滑动事件。‌解决滑动冲突‌在嵌套滚动场景例如RecyclerView嵌套在ScrollView或NestedScrollView中时合理使用此方法可避免滑动卡顿或行为异常。常见使用场景‌RecyclerView嵌套在NestedScrollView中‌默认情况下RecyclerView的isNestedScrollingEnabled为true会导致它自己处理滑动造成与外层容器冲突。此时应设为falserecyclerView.setNestedScrollingEnabled(false);‌自定义 View 实现复杂滑动逻辑‌若需自定义 嵌套View 参与嵌套滑动流程如顶部吸顶、分层滚动等需实NestedScrollingChild接口并调用helper new NestedScrollingChildHelper(this); helper.setNestedScrollingEnabled(true);关键要点‌默认值‌RecyclerView默认启用嵌套滑动即true。‌API 兼容性‌嵌套滑动机制从 ‌Android 5.0API 21‌ 开始支持。‌性能影响‌在复杂布局中合理关闭不必要的嵌套滑动可提升滚动流畅度。相关方法isNestedScrollingEnabled()判断当前是否启用嵌套滑动。startNestedScroll(int axes)主动发起嵌套滑动请求。dispatchNestedPreScroll()/dispatchNestedScroll()分发滑动事件给父/子视图。RecyclerView 的特点在 RecyclerView 中内置有许多动画 API例如notifyItemChanged (), notifyDataInserted (), notifyItemMoved () 等等如果需要自定义动画效果可以通过实现RecyclerView.ItemAnimator 类完成自定义动画效果然后调用 RecyclerView.setItemAnimator ()RecyclerView 中可以实现局部刷新例如notifyItemChanged ()RecyclerView 比 ListView 多两级缓存 ItemView 缓存支持开发者自定义缓存处理逻辑支持所有 RecyclerView 共用同一个 RecyclerViewPool (缓存池)。app命名空间可以省略写1. 基本使用方法ListView 是 AdapterView的子类AdapterView.OnItemClickListener、AdapterView.OnItemSelectedListener 这些关乎Item的操作都是在AdapterView中就有的抽象。ListView 只是在此基础上加了一些其他的功能比如addFooterView、addHeaderView 等//使用示例ListView listViewnew ListView(context);listView.setCacheColorHint(0);//滚动时透明Drawable colornew ColorDrawable(0xFFFFFFFF); //或使用Color.parseColor(#FFFFFF)若使用0x00FFFFFF显示不出来。listView.setDivider(color);//设置分割线listView.setDividerHeight(1);xml配置ListViewandroid:idid/listViewandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:divider#FFFandroid:dividerHeight1pxandroid:layout_margin10dip/2.Adapter介绍 http://code.google.com/p/androidlearn/wiki/AdapterArrayAdapter是一个绑定View到一组对象的通用类。默认情况下ArrayAdapter绑定每个对象的toString值到在layout中预先定义的TextView控件上。 可变通的构造函数允许你使用更加复杂的layout或者通过重写getView方法来扩展类从而使用TextView的替代物如ImageView或嵌套的layout。The android.R.layout.simple_list_item_1.xml Android example source codehttp://www.devdaily.com/java/jwarehouse/android-examples/platforms/android-2/data/res/layout/simple_list_item_1.xml.shtml重写Adapter类需要实现的方法 http://code.google.com/p/androidlearn/wiki/Adapter_custom需要重写Adapter类的四个方法public int getCount();public Object getItem(int position);public long getItemId(int position);public View getView(int position, View convertView, ViewGroup parent);3.过滤listView.setTextFilterEnabled(true);listView.setFilterText(a);会显示出一个过滤后的新的ListView层Android的数据过滤机制 http://winuxxan.blog.51cto.com/2779763/5099314.多选ListView 可以以多种样式展现比如多选式设置 ArrayAdapterT() 的第二个参数为 android.R.layout.simple_list_item_multiple_choice但此时的列表项被选中后并不会出现“绿勾”还需 ListView的 setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) 方法辅助。http://www.i1987.org/?p242取多选的结果SparseBooleanArray sparseBooleanArraylistView.getCheckedItemPositions();int sizesparseBooleanArray.size();for(int i0;isize;i){int indexsparseBooleanArray.keyAt(i);//如果选中后中再去掉选择这个项仍被选中了在这里需要再次判断if(listView.getCheckedItemPositions().get(index)){.....}}5.刷新BaseAdapter.notifyDataSetChanged();6.ArrayAdapter例 ArrayAdapterObject listViewAdapternew ArrayAdapterObject(this,android.R.layout.simple_list_item_1,objList);listView.setAdapter(listViewAdapter);7.快速滑动效果在开始普通滚动列表后滑动控制块出现。listView.setFastScrollEnabled(true);//就这么简单8.addHeaderView1.addHeaderView在setAdapter之前调用2.HeaderView不要设置setLayoutParams, 3.onClick的positionEditText editTextnew EditText(this);editText.setText(abc);listView.addHeaderView(editText);9.

相关新闻