Android 使用 RecyclerView

Fruit:

public class Fruit {
    private String name;
    private int imageId;

    public Fruit(String name, int imageId) {
        this.name = name;
        this.imageId = imageId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getImageId() {
        return imageId;
    }

    public void setImageId(int imageId) {
        this.imageId = imageId;
    }
}

fruit_item.xml:

<?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="wrap_content"
    android:layout_margin="4dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/fruit_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

    <TextView
        android:id="@+id/fruit_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_marginLeft="10dp" />

</LinearLayout>

FruitAdapter:

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
    private List<Fruit> fruits;

    public FruitAdapter(List<Fruit> fruits) {
        this.fruits = fruits;
    }

    static class ViewHolder extends RecyclerView.ViewHolder {
        View fruitView;
        ImageView fruitImage;
        TextView fruitName;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            fruitView = itemView;
            fruitImage = itemView.findViewById(R.id.fruit_image);
            fruitName = itemView.findViewById(R.id.fruit_name);
        }
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        viewHolder.fruitView.setOnClickListener(v -> {
            int position = viewHolder.getAdapterPosition();
            Fruit fruit = fruits.get(position);
            Toast.makeText(parent.getContext(), fruit.getName(), Toast.LENGTH_LONG).show();
        });
        viewHolder.fruitImage.setOnClickListener(v -> {
            Toast.makeText(parent.getContext(), "你點擊是的圖片" + viewHolder.getAdapterPosition(), Toast.LENGTH_LONG).show();
        });
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Fruit fruit = fruits.get(position);
        holder.fruitImage.setImageResource(fruit.getImageId());
        holder.fruitName.setText(fruit.getName());
    }

    @Override
    public int getItemCount() {
        return fruits.size();
    }
}

MainActivity:

public class MainActivity extends BaseActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "MainActivity onCreate");
        setContentView(R.layout.activity_main);
        this.initView();
    }

    /**
     * 初始化View
     */
    private void initView() {
        // 初始化RecyclerView
        RecyclerView recyclerView = findViewById(R.id.main_rv);
        // 數(shù)據(jù)源
        List<Fruit> fruits = new ArrayList<>();
        for (int i = 0; i < 30; i++) {
            fruits.add(new Fruit("水果" + i, R.drawable.ic_launcher_foreground));
        }
        // 創(chuàng)建布局管理器
        // LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        // layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
        // 設置布局管理器
        recyclerView.setLayoutManager(layoutManager);
        // 創(chuàng)建適配器
        FruitAdapter adapter = new FruitAdapter(fruits);
        // 設置適配器
        recyclerView.setAdapter(adapter);
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末键俱,一起剝皮案震驚了整個濱河市吗蚌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌感局,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件械馆,死亡現(xiàn)場離奇詭異央渣,居然都是意外死亡涩惑,警方通過查閱死者的電腦和手機低飒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門许昨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人褥赊,你說我怎么就攤上這事糕档。” “怎么了拌喉?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵速那,是天一觀的道長俐银。 經常有香客問我,道長琅坡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任残家,我火速辦了婚禮榆俺,結果婚禮上,老公的妹妹穿的比我還像新娘坞淮。我一直安慰自己茴晋,他們只是感情好,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布回窘。 她就那樣靜靜地躺著诺擅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啡直。 梳的紋絲不亂的頭發(fā)上烁涌,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機與錄音酒觅,去河邊找鬼撮执。 笑死,一個胖子當著我的面吹牛舷丹,可吹牛的內容都是我干的抒钱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼颜凯,長吁一口氣:“原來是場噩夢啊……” “哼谋币!你這毒婦竟也來了?” 一聲冷哼從身側響起症概,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蕾额,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后彼城,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凡简,經...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年精肃,在試婚紗的時候發(fā)現(xiàn)自己被綠了秤涩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡司抱,死狀恐怖筐眷,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情习柠,我是刑警寧澤匀谣,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布照棋,位于F島的核電站,受9級特大地震影響武翎,放射性物質發(fā)生泄漏烈炭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一宝恶、第九天 我趴在偏房一處隱蔽的房頂上張望符隙。 院中可真熱鬧,春花似錦垫毙、人聲如沸霹疫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丽蝎。三九已至,卻和暖如春膀藐,著一層夾襖步出監(jiān)牢的瞬間屠阻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工额各, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留栏笆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓臊泰,卻偏偏與公主長得像蛉加,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缸逃,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內容