这里只是简单记录一下怎么使用
|
|
第一步:Layout文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/RecyclerViewId"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
第2步:Activity
这里是实现的瀑布视图
public class RecyclerViewActivity extends Activity {
private RecyclerView mRecyclerView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler_view_demo);
mRecyclerView = findViewById(R.id.RecyclerViewId);
List<String> dataList = new ArrayList<>();
for(int i=0;i<30;i++){
dataList.add(new String("数据" + (i+1)));
}
RecycleViewAdapter recycleAdapter = new RecycleViewAdapter(this,dataList);
//截图2的效果
/*GridLayoutManager manager = new GridLayoutManager(this,4);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup(){
@Override
public int getSpanSize(int position) {
if(position == 4) return 3;
if(position == 8) return 2;
return 1;
}
});*/
//截图1的效果
StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(4, OrientationHelper.VERTICAL);
mRecyclerView.setLayoutManager(manager);
mRecyclerView.setAdapter(recycleAdapter);
}
}
第3步:实现Adapter
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyViewHolder>{
private View mItemView;
private Context mContext;
private List<String> mList;
public RecycleViewAdapter(Context context, List<String> list) {
this.mContext = context;
mList = list;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mItemView = LayoutInflater.from(mContext).inflate(R.layout.item_text,parent,false);
MyViewHolder holder = new MyViewHolder(mItemView);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
if(position == 4){
ViewGroup.LayoutParams params = holder.rootView.getLayoutParams();
params.height = 150 * 3 *2;//holder.rootView.getMeasuredHeight() *2;
holder.rootView.setLayoutParams(params);
}
holder.textView.setText(mList.get(position));
}
@Override
public int getItemCount() {
return mList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView textView;
ViewGroup rootView ;
public MyViewHolder(View itemView) {
super(itemView);
rootView= (ViewGroup)itemView;
textView = (TextView) itemView.findViewById(R.id.textView);
}
}
}
其他:导入support 包