BRVAH官方使用指南(持续更新)
github地址
Android RecyclerView 使用完全解析 体验艺术般的控件
project的gradle中添加:
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
module的gradle中添加:
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
RecyclerView列表布局:
"http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
.support.v7.widget.RecyclerView
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#000000"
android:dividerHeight="10dp" />
RecyclerView的item布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<TextView
android:id="@+id/id_num"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#44ff0000"
android:gravity="center"
android:text="1" />
<TextView
android:id="@+id/id_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#44ff4081"
android:gravity="center"
android:text="第一个" />
LinearLayout>
class HomeAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
/**
* 构造方法:
*
* @param layoutResId:
* @param data:
*/
public HomeAdapter(int layoutResId, List data) {
super(layoutResId, data);
}
/**
* 设置数据
*
* @param helper :holder
* @param item :item的数据
*/
@Override
protected void convert(BaseViewHolder helper, String item) {
helper.setText(R.id.id_num, item);//item布局的控件id、item数据
helper.setText(R.id.id_text, "第" + helper.getAdapterPosition() + "个数据");
//item布局的控件id、item数据
helper.addOnClickListener(R.id.id_num);
helper.addOnLongClickListener(R.id.id_text);
//getLayoutPosition() 获取当前item的position
if (helper.getAdapterPosition() % 2 == 0) {
helper.setTextColor(R.id.id_num, Color.RED);
} else {
helper.setTextColor(R.id.id_num, Color.YELLOW);
}
}
}
package example.com.mybrvahdemo;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private RecyclerView mRecyclerView;
private List mDatas;
private HomeAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
initData();
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//适配器参数:item布局、列表数据源
mAdapter = new HomeAdapter(R.layout.item_rv, mDatas);
//设置数据
mRecyclerView.setAdapter(mAdapter);
//动画
mAdapter.openLoadAnimation(BaseQuickAdapter.SCALEIN);
// //短按item
// mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
// @Override
// public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
// Log.d(TAG, "onItemClick: ");
// Toast.makeText(MainActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show();
// }
// });
// //长按item
// mAdapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
// @Override
// public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
// Log.d(TAG, "onItemLongClick: ");
// Toast.makeText(MainActivity.this, "onItemLongClick" + position, Toast.LENGTH_SHORT).show();
// return false;
// }
// });
//短按item子控件
mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "OnItemChildClickListener: ");
Toast.makeText(MainActivity.this, "OnItemChildClickListener" + position, Toast.LENGTH_SHORT).show();
}
});
//长按item子控件
mAdapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
@Override
public boolean onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "OnItemChildLongClickListener: ");
Toast.makeText(MainActivity.this, "OnItemChildLongClickListener" + position, Toast.LENGTH_SHORT).show();
return false;
}
});
}
protected void initData() {
mDatas = new ArrayList();
for (int i = 'A'; i < 'z'; i++) {
mDatas.add("" + (char) i);
}
}
//不用框架的适配器
// class HomeAdapter extends RecyclerView.Adapter {
//
// @Override
// public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// MyViewHolder holder = new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_home, parent, false));
// return holder;
// }
//
// @Override
// public void onBindViewHolder(MyViewHolder holder, int position) {
// holder.tv.setText(mDatas.get(position));
// }
//
// @Override
// public int getItemCount() {
// return mDatas.size();
// }
//
// class MyViewHolder extends RecyclerView.ViewHolder {
//
// TextView tv;
//
// public MyViewHolder(View view) {
// super(view);
// tv = (TextView) view.findViewById(R.id.id_num);
// }
// }
// }
class HomeAdapter extends BaseQuickAdapter {
/**
* 构造方法
*
* @param layoutResId:
* @param data:
*/
public HomeAdapter(int layoutResId, List data) {
super(layoutResId, data);
}
/**
* 设置数据
*
* @param helper :holder
* @param item :item的数据
*/
@Override
protected void convert(BaseViewHolder helper, String item) {
helper.setText(R.id.id_num, item);//item布局的控件id、item数据
helper.setText(R.id.id_text, "第" + helper.getAdapterPosition() + "个数据");
//item布局的控件id、item数据
helper.addOnClickListener(R.id.id_num);
helper.addOnLongClickListener(R.id.id_text);
//getLayoutPosition() 获取当前item的position
if (helper.getAdapterPosition() % 2 == 0) {
helper.setTextColor(R.id.id_num, Color.RED);
} else {
helper.setTextColor(R.id.id_num, Color.YELLOW);
}
}
}
}