Board logo

標題: RecyclerView [打印本頁]

作者: ray    時間: 2019-9-7 15:57     標題: RecyclerView

本帖最後由 ray 於 2019-9-8 11:34 編輯





String n[]={"水瓶座","雙魚座","白羊座","金牛座","雙子座","巨蟹座","獅子座","處女座","天秤座","天蠍座","射手座","魔羯座"};

String date[]={"1月21日 - 2月18日","2月19日 - 3月20日","3月21日 - 4月19日","4月21日 - 5月21日","5月22日 - 6月21日","6月22日 - 7月22日","7月23日 - 8月22日","8月23日 - 9月22日","9月23日 - 10月23日","10月24日 - 11月21日","11月22日 - 12月20日","12月21日 - 1月20日"};

int imgId[]={R.drawable.p0,R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,R.drawable.p7,R.drawable.p8,R.drawable.p9,R.drawable.p10,R.drawable.p11};


[attach]7100[/attach]
作者: 李知易    時間: 2019-9-9 21:30

[attach]7104[/attach]
作者: ray    時間: 2019-9-21 08:51

build.gradle(app):
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'

Activity_main.xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:orientation="vertical"
  8.     tools:context=".MainActivity">

  9.     <android.support.v7.widget.RecyclerView
  10.         android:layout_width="match_parent"
  11.         android:layout_height="match_parent"
  12.         android:id="@+id/recycleView"
  13.         android:layout_gravity="center_horizontal" />

  14. </LinearLayout>
複製代碼
row_item.xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="158dp"
  5.     android:paddingBottom="10dp"
  6.     android:paddingLeft="10dp"
  7.     android:paddingRight="10dp"
  8.     android:paddingTop="10dp">

  9.     <android.support.v7.widget.CardView
  10.         xmlns:android="http://schemas.android.com/apk/res/android"
  11.         xmlns:app="http://schemas.android.com/apk/res-auto"
  12.         android:id="@+id/cardView"
  13.         android:layout_width="match_parent"
  14.         android:layout_height="128dp"
  15.         android:gravity="center_vertical"
  16.         app:cardBackgroundColor="#a0d0ff"
  17.         app:cardCornerRadius="12dp"
  18.         app:cardElevation="5dp">

  19.         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  20.             android:layout_width="match_parent"
  21.             android:layout_height="128dp">

  22.             <ImageView
  23.                 android:id="@+id/itemImage"
  24.                 android:layout_width="108dp"
  25.                 android:layout_height="108dp"
  26.                 android:layout_marginLeft="10dp"
  27.                 android:layout_marginTop="10dp" />

  28.             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  29.                 android:layout_width="256dp"
  30.                 android:layout_height="128dp"
  31.                 android:orientation="vertical">

  32.                 <TextView
  33.                     android:id="@+id/itemText1"
  34.                     android:layout_width="match_parent"
  35.                     android:layout_height="64dp"
  36.                     android:layout_marginLeft="20dp"
  37.                     android:layout_marginTop="20dp"
  38.                     android:textSize="30sp" />

  39.                 <TextView
  40.                     android:id="@+id/itemText2"
  41.                     android:layout_width="match_parent"
  42.                     android:layout_height="64dp"
  43.                     android:layout_marginLeft="20dp" />
  44.             </LinearLayout>

  45.         </LinearLayout>

  46.     </android.support.v7.widget.CardView>

  47. </LinearLayout>
複製代碼
MainActivity.java:
  1. package ray.ap.recyclerviewtest;

  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.support.v7.widget.LinearLayoutManager;
  5. import android.support.v7.widget.RecyclerView;

  6. import java.util.ArrayList;

  7. public class MainActivity extends AppCompatActivity {

  8.     String n[]={"水瓶座","雙魚座","白羊座","金牛座","雙子座","巨蟹座","獅子座","處女座","天秤座","天蠍座","射手座","魔羯座"};
  9.     String date[]={"1月21日 - 2月18日","2月19日 - 3月20日","3月21日 - 4月19日","4月21日 - 5月21日","5月22日 - 6月21日","6月22日 - 7月22日","7月23日 - 8月22日","8月23日 - 9月22日","9月23日 - 10月23日","10月24日 - 11月21日","11月22日 - 12月20日","12月21日 - 1月20日"};
  10.     int imgId[]={R.drawable.p0,R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,R.drawable.p7,R.drawable.p8,R.drawable.p9,R.drawable.p10,R.drawable.p11};

  11.     RecyclerView mRecyclerView;
  12.     ArrayList<Card> mDataSet = new ArrayList<Card>();

  13.     @Override
  14.     protected void onCreate(Bundle savedInstanceState) {
  15.         super.onCreate(savedInstanceState);
  16.         setContentView(R.layout.activity_main);
  17.         mRecyclerView = (RecyclerView)this.findViewById(R.id.recycleView);

  18.         for(int i = 0;i < 12;i++){
  19.             Card cc = new Card();
  20.             cc.name = n[i];
  21.             cc.date = date[i];
  22.             cc.image = this.getDrawable(imgId[i]);
  23.             mDataSet.add(cc);
  24.         }

  25.         MyRecyclerViewAdapter myAdapter = new MyRecyclerViewAdapter(this,mDataSet);

  26.         mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
  27.         mRecyclerView.setAdapter(myAdapter);
  28.     }
  29. }
複製代碼
MyRecycleViewAdapter.java:
  1. package ray.ap.recyclerviewtest;

  2. import android.content.Context;
  3. import android.support.annotation.NonNull;
  4. import android.support.v7.widget.RecyclerView;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10. import android.widget.Toast;

  11. import java.util.ArrayList;

  12. public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {

  13.     private static Context mContext;
  14.     private static ArrayList<Card> mDataSet = new ArrayList<Card>();

  15.     public MyRecyclerViewAdapter(Context context, ArrayList<Card> dataset){
  16.         mContext = context;
  17.         mDataSet = dataset;
  18.     }

  19.     @NonNull
  20.     @Override
  21.     public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
  22.         return new ViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_item,viewGroup,false));
  23.     }

  24.     @Override
  25.     public void onBindViewHolder(@NonNull ViewHolder myViewHolder, int position) {
  26.         myViewHolder.itemView.setTag(position);
  27.         myViewHolder.itemText1.setText(mDataSet.get(position).name);
  28.         myViewHolder.itemText2.setText(mDataSet.get(position).date);
  29.         myViewHolder.itemImage.setImageDrawable(mDataSet.get(position).image);
  30.     }

  31.     @Override
  32.     public int getItemCount() {
  33.         return mDataSet.size();
  34.     }

  35.     public static class ViewHolder extends RecyclerView.ViewHolder {
  36.         final ImageView itemImage;
  37.         final TextView itemText1;
  38.         final TextView itemText2;

  39.         public ViewHolder(@NonNull View itemView) {
  40.             super(itemView);

  41.             itemView.setOnClickListener(new View.OnClickListener(){

  42.                 @Override
  43.                 public void onClick(View view) {
  44.                     int pos = (int)view.getTag();
  45.                     Toast.makeText(mContext,"你點選的是."+mDataSet.get(pos).name+"!",Toast.LENGTH_SHORT).show();
  46.                 }
  47.             });

  48.             itemImage = (ImageView) itemView.findViewById(R.id.itemImage);
  49.             itemText1 = (TextView) itemView.findViewById(R.id.itemText1);
  50.             itemText2 = (TextView) itemView.findViewById(R.id.itemText2);
  51.         }
  52.     }
  53. }
複製代碼
Card.java:
  1. package ray.ap.recyclerviewtest;

  2. import android.graphics.drawable.Drawable;

  3. public class Card {
  4.     public String name;
  5.     public String date;
  6.     public Drawable image;
  7. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2