RecyclerView 与 CardView
RecyclerView With CardView
我正在使用 RecyclerView + CardView 来列出 A-Z 的所有国家/地区,就像我在这里所做的那样
但我希望它们并排排列,所以保存 space 像这样
实现此目标的最佳方法是什么?
卡适配器
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
List<Nationality> mItems;
public CardAdapter() {
super();
mItems = new ArrayList<Nationality>();
Nationality movie = new Nationality();
movie.setThumbnail(R.drawable.afghanistan);
movie.setName("Afghanistan");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.albania);
movie.setName("Albania");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.algeria);
movie.setName("Algeria");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.american_samoa);
movie.setName("American Samoa");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.andorra);
movie.setName("Andorra");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.angola);
movie.setName("Angola");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.anguilla);
movie.setName("Anguilla");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.antigua_and_barbuda);
movie.setName("Antigua and Barbuda");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.argentina);
movie.setName("Argentina");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.armenia);
movie.setName("Armenia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.aruba);
movie.setName("Aruba");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.australia);
movie.setName("Australia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.austria);
movie.setName("Austria");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.azerbaijan);
movie.setName("Azerbaijan");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bahamas);
movie.setName("Bahamas");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bahrain);
movie.setName("Bahrain");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bangladesh);
movie.setName("Bangladesh");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.barbados);
movie.setName("Barbados");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.belarus);
movie.setName("Belarus");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.belgium);
movie.setName("Belgium");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.belize);
movie.setName("Belize");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.benin);
movie.setName("Benin");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bermuda);
movie.setName("Bermuda");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bhutan);
movie.setName("Bhutan");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bolivia);
movie.setName("Bolivia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bosnia_and_herzegovina);
movie.setName("Bosnia and Herzegovina");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.botswana);
movie.setName("Botswana");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.brazil);
movie.setName("Brazil");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.british_virgin_islands);
movie.setName("British Virgin Islands");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.brunei);
movie.setName("Brunei");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bulgaria);
movie.setName("Bulgaria");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.burkina_faso);
movie.setName("Burkina Faso");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.burundi);
movie.setName("Burundi");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cambodia);
movie.setName("Cambodia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cameroon);
movie.setName("Cameroon");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.canada);
movie.setName("Canada");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cape_verde);
movie.setName("Cape Verde");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cayman_islands);
movie.setName("Cayman Islands");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.central_african_republic);
movie.setName("Central African Republic");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.chad);
movie.setName("Chad");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.chile);
movie.setName("Chile");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.china);
movie.setName("China");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.colombia);
movie.setName("Colombia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.comoros);
movie.setName("Comoros");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cook_islands);
movie.setName("Cook Islands");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.costa_rica);
movie.setName("Costa Rica");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cote_divoire);
movie.setName("Cote d'Ivoire");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.croatia);
movie.setName("Croatia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cuba);
movie.setName("Cuba");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cayman_islands);
movie.setName("Cayman Island");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.curacao);
movie.setName("Curacao");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cyprus);
movie.setName("Cyprus");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.czech_republic);
movie.setName("Czech Republic");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.democratic_republic_of_the_congo);
movie.setName("Democratic Republic of the Congo");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.denmark);
movie.setName("Denmark");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.djibouti);
movie.setName("Djibouti");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.dominica);
movie.setName("Dominica");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.dominican_republic);
movie.setName("Dominican Republic");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.ecuador);
movie.setName("Ecuador");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.egypt);
movie.setName("Egypt");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.el_salvador);
movie.setName("El Salvador");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.england);
movie.setName("England");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.equatorial_guinea);
movie.setName("Equatorial Guinea");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.eritrea);
movie.setName("Eritrea");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.estonia);
movie.setName("Estonia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.ethiopia);
movie.setName("Ethiopia");
mItems.add(movie);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.recycler_view_card_item, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Nationality movie = mItems.get(i);
viewHolder.natThumbnail.setImageResource(movie.getThumbnail());
viewHolder.natName.setText(movie.getName());
}
@Override
public int getItemCount() {
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public ImageView natThumbnail;
public TextView natName;
public ViewHolder(View itemView) {
super(itemView);
natThumbnail = (ImageView)itemView.findViewById(R.id.layoutThumbnail);
natName = (TextView)itemView.findViewById(R.id.layoutName);
}
}
}
国籍
public class Nationality {
private int natThumb;
private String natName;
public int getThumbnail() {
return natThumb;
}
public void setThumbnail(int thumbnail) {
this.natThumb = thumbnail;
}
public String getName() {
return natName;
}
public void setName(String name) {
this.natName = name;
}
}
RecyclerView 布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="180dp"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardCornerRadius="3dp"
card_view:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="180dp"
android:layout_height="wrap_content"
android:background="#DDD">
<ImageView
android:id="@+id/layoutThumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:src="@drawable/afghanistan"
android:gravity="center_vertical"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/layoutName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Country Name"
android:textSize="@dimen/abc_text_size_body_1_material"
android:layout_below="@id/layoutThumbnail"
android:layout_centerInParent="true"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
是的PM25793
评论是对的
将 layoutManager 设置为 recyclerView 上的 gridLayoutManagar,如下所示
recyclerView= (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
GridLayoutManager glm = new GridLayoutManager(this, 2); // 2 columns in each row
glm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(glm);
我正在使用 RecyclerView + CardView 来列出 A-Z 的所有国家/地区,就像我在这里所做的那样
但我希望它们并排排列,所以保存 space 像这样
实现此目标的最佳方法是什么?
卡适配器
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
List<Nationality> mItems;
public CardAdapter() {
super();
mItems = new ArrayList<Nationality>();
Nationality movie = new Nationality();
movie.setThumbnail(R.drawable.afghanistan);
movie.setName("Afghanistan");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.albania);
movie.setName("Albania");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.algeria);
movie.setName("Algeria");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.american_samoa);
movie.setName("American Samoa");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.andorra);
movie.setName("Andorra");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.angola);
movie.setName("Angola");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.anguilla);
movie.setName("Anguilla");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.antigua_and_barbuda);
movie.setName("Antigua and Barbuda");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.argentina);
movie.setName("Argentina");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.armenia);
movie.setName("Armenia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.aruba);
movie.setName("Aruba");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.australia);
movie.setName("Australia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.austria);
movie.setName("Austria");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.azerbaijan);
movie.setName("Azerbaijan");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bahamas);
movie.setName("Bahamas");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bahrain);
movie.setName("Bahrain");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bangladesh);
movie.setName("Bangladesh");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.barbados);
movie.setName("Barbados");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.belarus);
movie.setName("Belarus");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.belgium);
movie.setName("Belgium");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.belize);
movie.setName("Belize");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.benin);
movie.setName("Benin");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bermuda);
movie.setName("Bermuda");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bhutan);
movie.setName("Bhutan");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bolivia);
movie.setName("Bolivia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bosnia_and_herzegovina);
movie.setName("Bosnia and Herzegovina");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.botswana);
movie.setName("Botswana");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.brazil);
movie.setName("Brazil");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.british_virgin_islands);
movie.setName("British Virgin Islands");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.brunei);
movie.setName("Brunei");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.bulgaria);
movie.setName("Bulgaria");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.burkina_faso);
movie.setName("Burkina Faso");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.burundi);
movie.setName("Burundi");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cambodia);
movie.setName("Cambodia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cameroon);
movie.setName("Cameroon");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.canada);
movie.setName("Canada");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cape_verde);
movie.setName("Cape Verde");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cayman_islands);
movie.setName("Cayman Islands");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.central_african_republic);
movie.setName("Central African Republic");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.chad);
movie.setName("Chad");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.chile);
movie.setName("Chile");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.china);
movie.setName("China");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.colombia);
movie.setName("Colombia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.comoros);
movie.setName("Comoros");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cook_islands);
movie.setName("Cook Islands");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.costa_rica);
movie.setName("Costa Rica");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cote_divoire);
movie.setName("Cote d'Ivoire");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.croatia);
movie.setName("Croatia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cuba);
movie.setName("Cuba");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cayman_islands);
movie.setName("Cayman Island");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.curacao);
movie.setName("Curacao");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.cyprus);
movie.setName("Cyprus");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.czech_republic);
movie.setName("Czech Republic");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.democratic_republic_of_the_congo);
movie.setName("Democratic Republic of the Congo");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.denmark);
movie.setName("Denmark");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.djibouti);
movie.setName("Djibouti");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.dominica);
movie.setName("Dominica");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.dominican_republic);
movie.setName("Dominican Republic");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.ecuador);
movie.setName("Ecuador");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.egypt);
movie.setName("Egypt");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.el_salvador);
movie.setName("El Salvador");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.england);
movie.setName("England");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.equatorial_guinea);
movie.setName("Equatorial Guinea");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.eritrea);
movie.setName("Eritrea");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.estonia);
movie.setName("Estonia");
mItems.add(movie);
movie = new Nationality();
movie.setThumbnail(R.drawable.ethiopia);
movie.setName("Ethiopia");
mItems.add(movie);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.recycler_view_card_item, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
Nationality movie = mItems.get(i);
viewHolder.natThumbnail.setImageResource(movie.getThumbnail());
viewHolder.natName.setText(movie.getName());
}
@Override
public int getItemCount() {
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public ImageView natThumbnail;
public TextView natName;
public ViewHolder(View itemView) {
super(itemView);
natThumbnail = (ImageView)itemView.findViewById(R.id.layoutThumbnail);
natName = (TextView)itemView.findViewById(R.id.layoutName);
}
}
}
国籍
public class Nationality {
private int natThumb;
private String natName;
public int getThumbnail() {
return natThumb;
}
public void setThumbnail(int thumbnail) {
this.natThumb = thumbnail;
}
public String getName() {
return natName;
}
public void setName(String name) {
this.natName = name;
}
}
RecyclerView 布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="180dp"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardCornerRadius="3dp"
card_view:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="180dp"
android:layout_height="wrap_content"
android:background="#DDD">
<ImageView
android:id="@+id/layoutThumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:src="@drawable/afghanistan"
android:gravity="center_vertical"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/layoutName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Country Name"
android:textSize="@dimen/abc_text_size_body_1_material"
android:layout_below="@id/layoutThumbnail"
android:layout_centerInParent="true"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
是的PM25793
评论是对的
将 layoutManager 设置为 recyclerView 上的 gridLayoutManagar,如下所示
recyclerView= (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
GridLayoutManager glm = new GridLayoutManager(this, 2); // 2 columns in each row
glm.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(glm);