Android 如何为GridLayoutManager创建自动适配列
我使用RecyclerView来显示卡片。 如何使列适合显示,因为Android 如何为GridLayoutManager创建自动适配列,android,gridview,android-recyclerview,Android,Gridview,Android Recyclerview,我使用RecyclerView来显示卡片。 如何使列适合显示,因为 layoutManager = new GridLayoutManager(getBaseContext(), int); 只能设置定义的列数。 我知道GridView中有auto_fit,但我不知道应该在哪里使用它 卡片布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.
layoutManager = new GridLayoutManager(getBaseContext(), int);
只能设置定义的列数。
我知道GridView中有auto_fit,但我不知道应该在哪里使用它
卡片布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:tag="cards main container">
<android.support.v7.widget.CardView
android:id="@+id/card_view"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@color/moccasin"
card_view:cardCornerRadius="10dp"
card_view:cardElevation="5dp"
android:layout_marginLeft="@dimen/activity_vertical_margin"
android:layout_marginRight="@dimen/activity_vertical_margin"
android:layout_marginTop="2dip"
android:layout_marginBottom="2dip"
card_view:cardUseCompatPadding="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/imageView"
android:tag="image_tag"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_weight="2"
android:orientation="vertical"
>
<TextView
android:id="@+id/textViewName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:id="@+id/textViewEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
MyAdapter.java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private ArrayList<PersonData> peopleDataSet;
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView textViewName;
TextView textViewEmail;
ImageView imageViewIcon;
public MyViewHolder(View itemView) {
super(itemView);
this.textViewName = (TextView) itemView.findViewById(R.id.textViewName);
this.textViewEmail = (TextView) itemView.findViewById(R.id.textViewEmail);
this.imageViewIcon = (ImageView) itemView.findViewById(R.id.imageView);
}
}
public MyAdapter(ArrayList<PersonData> people) {
this.peopleDataSet = people;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cards_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
TextView textViewName = holder.textViewName;
final TextView textViewEmail = holder.textViewEmail;
ImageView imageView = holder.imageViewIcon;
textViewName.setText(peopleDataSet.get(listPosition).getName());
textViewEmail.setText(peopleDataSet.get(listPosition).getEmail());
imageView.setImageResource(peopleDataSet.get(listPosition).getImage());
}
@Override
public int getItemCount() {
return peopleDataSet.size();
}
}
公共类MyAdapter扩展了RecyclerView.Adapter{
私有ArrayList peopleDataSet;
公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{
TextView textViewName;
text查看text查看电子邮件;
图像视图图像视图图标;
公共MyViewHolder(查看项目视图){
超级(项目视图);
this.textViewName=(TextView)itemView.findViewById(R.id.textViewName);
this.textViewEmail=(TextView)itemView.findViewById(R.id.textViewEmail);
this.imageViewIcon=(ImageView)itemView.findViewById(R.id.ImageView);
}
}
公共MyAdapter(ArrayList人员){
this.peopleDataSet=人;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,
int视图类型){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.cards\u布局,父级,假);
MyViewHolder MyViewHolder=新的MyViewHolder(视图);
返回myViewHolder;
}
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,最终int listPosition){
TextView textViewName=holder.textViewName;
final TextView textViewEmail=holder.textViewEmail;
ImageView ImageView=holder.imageViewIcon;
textViewName.setText(peopleDataSet.get(listPosition.getName());
textViewEmail.setText(peopleDataSet.get(listPosition.getEmail());
setImageResource(peopleDataSet.get(listPosition.getImage());
}
@凌驾
public int getItemCount(){
返回peopleDataSet.size();
}
}
看一看:。@chiuki exout me,你能解释一下如何使用你的AutofitRecyclerView吗?我不明白如何在我的主要活动中使用它。同样的问题有一个很好的答案:可能是重复的