让网格翻页开发变得更简单,配合dataBinding食用,真香!
androidX
implementation 'com.zwenkai:gridpagerview:2.0.1'
support[不再维护]
// Jcenter
implementation 'com.kevin:gridpagerview:1.0.1'
<com.kevin.gridpager.GridPagerView
android:id="@+id/grid_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"/>
这里使用常用方式,推荐使用dataBinding的方式,参考demo中BindingCategoryAdapter。
class CategoryAdapter : ClickableGridViewAdapter<Category, CommonCategoryAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.layout_common_category_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int, pagePosition: Int, item: Category) {
super.onBindViewHolder(holder, position, pagePosition, item)
holder.tvName.text = item.name
}
override fun onItemClick(view: View, item: Category, position: Int, pagePosition: Int) {
Toast.makeText(view.context, "position = $position, pagePosition = $pagePosition, ${item.name}", Toast.LENGTH_SHORT).show()
}
class ViewHolder(itemView: View) :
RecyclerView.ViewHolder(itemView) {
var tvName: TextView = itemView.findViewById(R.id.tv_name)
}
}
gridPagerView.setGridViewAdapter(CategoryAdapter())
// 设置数据
val list: MutableList<Category> = mutableListOf()
for (i in 0 until count) {
list.add(Category("item $i"))
}
gridPagerView.setDataItems(list)
<com.kevin.gridpager.GridViewPager
android:id="@+id/cate_page"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"
app:gvp_pageColumns="[列数]"
app:gvp_pageRows="[行数]"/>
// 设置单页列数
gridPagerView.setPageColumns(columns)
// 设置单页行数
gridPagerView.setPageRows(rows)
// 设置数据
gridPagerView.setDataItems(list)
Copyright (c) 2019 Kevin zhou
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.