RecyclerView替代Listview,实现滚动列表的显示
来源:互联网 发布:java版qq是什么意思 编辑:程序博客网 时间:2024/05/22 03:25
以前,我们要显示一个列表用的都是Listview+adapter,但是如果有多个类别使用Listeview就比较麻烦,而RecycleView却可以简单实现很多效果
首先,第一步,在layout-activity_main.xml中,加入Recycle的布局,这里就给一些基本的属性,如果想加其他属性可以自己加
<android.support.v7.widget.RecyclerView android:id="@+id/rv_task_list" android:layout_width="match_parent" android:layout_height="wrap_content" />
第二步,在MainActivity里面
package com.bolu.jpad.activities;import android.content.Intent;import android.graphics.Rect;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.Toolbar;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import com.bolu.jpad.beans.TaskList;import com.bolu.jpad.beans.TaskManager;import com.zhy.base.adapter.ViewHolder;import com.zhy.base.adapter.recyclerview.OnItemClickListener;import com.zhy.base.adapter.recyclerview.support.SectionAdapter;import com.zhy.base.adapter.recyclerview.support.SectionSupport;import java.util.ArrayList;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;public class TaskListActivity extends AppCompatActivity { private static final int EDU_TYPE = 0; private static final int LABOR_TYPE = 1; public static final String EDU_DATA = "edu_data"; public static final String LABOR_DATA = "labor_data"; public static final String TYPE_DATA = "tape_data"; public static final int TYPE_DATA_EDU = 5; public static final int TYPE_DATA_LABOR = 6; @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.rv_task_list) RecyclerView rvTaskList; private List<TaskList> mList = new ArrayList<>(); private TaskManager.EduListBean eduList=new TaskManager.EduListBean(); private TaskManager.LaborListBean laborListBean=new TaskManager.LaborListBean(); private List<TaskManager> taskManagers; public static final String EDU_LIST = "eduList";List<TaskManager.EduListBean> eduListBeanList; List<TaskManager.LaborListBean> getLaborList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_task_list); ButterKnife.bind(this); taskManagers = (List<TaskManager>) getIntent().getSerializableExtra(FunctionActivity.EDU_LIST); initDatas();//设置toolbar样式 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setBackgroundResource(R.drawable.actionbar_background); toolbar.setNavigationIcon(R.mipmap.arrow_prev);//设置Recycleview的item之间的间距为30 int spacingInPixels =30; rvTaskList.addItemDecoration(new SpacesItemDecoration(spacingInPixels)); //设置recycleview的布局是垂直显示 LinearLayoutManager llm = new LinearLayoutManager(this); llm.setOrientation(LinearLayoutManager.VERTICAL); rvTaskList.setLayoutManager(llm); SectionSupport<TaskList> sectionSupport = new SectionSupport<TaskList>() { @Override//找到头文件的布局以及他的id public int sectionHeaderLayoutId() { return R.layout.layout_task_header; } @Override public int sectionTitleTextViewId() { return R.id.tv_tasktype; }//截取头文件的前四个字符串 @Override public String getTitle(TaskList s) { return s.getTitle().substring(0,4); } };//将内容设置到适配器中 SectionAdapter<TaskList> adapter = new SectionAdapter<TaskList>(this, R.layout.listitem_tasks_details, mList, sectionSupport) { @Override public void convert(ViewHolder holder, TaskList taskList) { holder.setText(R.id.tv_task, taskList.getTitle().substring(4)); } };//给item设置点击事件(可以直接通过adapter.setOnItemClickListener) adapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(ViewGroup parent, View view, Object o, int position) { Intent intent = new Intent(TaskListActivity.this, CheckTaskActivity.class); switch (mList.get(position).getType()) { case EDU_TYPE: TaskManager.EduListBean eduListBean = eduListBeanList.get(position); intent.putExtra(EDU_DATA, eduListBean); intent.putExtra(TYPE_DATA, TYPE_DATA_EDU); break; case LABOR_TYPE: int currentPosition = position - eduListBeanList.size(); TaskManager.LaborListBean laborListBean = getLaborList.get(currentPosition); intent.putExtra(LABOR_DATA,laborListBean); intent.putExtra(TYPE_DATA, TYPE_DATA_LABOR); break; } startActivity(intent); } @Override public boolean onItemLongClick(ViewGroup parent, View view, Object o, int position) { return false; } }); rvTaskList.setAdapter(adapter); } private void initDatas() { for(TaskManager taskManager : taskManagers) { //集中教育 eduListBeanList = taskManager.getEduList(); for(TaskManager.EduListBean eduListBean : eduListBeanList) { TaskList taskList = new TaskList(); taskList.setTitle("集中教育"+eduListBean.getE_title()); taskList.setType(EDU_TYPE); mList.add(taskList); } //社区服务 getLaborList = taskManager.getLaborList(); for(TaskManager.LaborListBean laborListBean : getLaborList) { TaskList taskList = new TaskList(); taskList.setTitle("社区服务"+laborListBean.getL_title()); taskList.setType(LABOR_TYPE); mList.add(taskList); } } }//Activity返回到上一个activity public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private int space; public SpacesItemDecoration(int space) { this.space = space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.left = space; outRect.right = space; outRect.bottom = space; // Add top margin only for the first item to avoid double space between items if (parent.getChildPosition(view) == 0) outRect.top = space; } }}
0 0
- RecyclerView替代Listview,实现滚动列表的显示
- Android在滚动列表中实现视频的播放(ListView & RecyclerView)
- Android在滚动列表中实现视频的播放(ListView & RecyclerView)
- 替代ListView的RecyclerView 的使用
- 使用RecyclerView替代ListView
- RecyclerView替代listview
- (更新版)Android VideoPlayer 在滚动列表实现item视频播放(ListView控件和RecyclerView)
- RecyclerView的初步使用(1)----代替ListView实现图片列表
- ListView,RecyclerView等列表中实现分层的方法
- RecyclerView、ListView实现单选列表的优雅之路
- RecyclerView、ListView实现单选列表的优雅之路
- RecyclerView、ListView实现单选列表的优雅之路.
- 通过recyclerView实现列表显示
- Android 自定义RecyclerView (替代ListView的最新组件)实现真正的Gallery效果
- RecyclerView、ListView实现单选列表
- [Android]使用RecyclerView替代ListView
- ListView的列表显示
- 将替代ListView的RecyclerView 的使用(一)
- 2.C++01:C++ Hello World
- CocoaPods的安装使用和常见问题
- Surface 1 rt 待机黑屏 打不开
- 关于windebug查询进程中各个线程占用cpu时间,解决CPU占用很大问题
- iOS中气泡对话框拉伸效果视图的实现
- RecyclerView替代Listview,实现滚动列表的显示
- 2016.6.21笔记(1)-多线程同步
- get/post的方式发送数据到指定的http接口
- 多线程 + 网络 + 概率 + 基础 + 文件
- windows下“openscmanager failed 拒绝访问”问题解决
- Android中自定义属性(attrs.xml,TypedArray的使用)
- iOS pch中常见的代码
- error C2511: 'Teacher_Cadre::Teacher_Cadre(std::string,int,char,std::string,std::string,std::string,
- 配置自己的CocoaPods库