Android Studio實現列表展示圖片

效果:
在這里插入圖片描述
MainActivity 類

package com.example.tabulation;import android.content.Intent;
import android.os.Bundle;
import android.view.View;import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;public class MainActivity extends AppCompatActivity implements RecyclerViewAdapter.onRecyclerViewItemClickListener {//定義一個圖片數組private int[] image = {R.drawable.img, R.drawable.img_1, R.drawable.img_2, R.drawable.img_3, R.drawable.img_4, R.drawable.img_5,R.drawable.img_6, R.drawable.img_7, R.drawable.img_8, R.drawable.img_9, R.drawable.img_10,R.drawable.img_11, R.drawable.img_12, R.drawable.img_13, R.drawable.img_14, R.drawable.img_15,R.drawable.img_16, R.drawable.img_17, R.drawable.img_18, R.drawable.img_19};private RecyclerView recyclerview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {recyclerview = (RecyclerView) findViewById(R.id.recyclerview);//新建一個RecyclerView的適配器,并傳入數據RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(this, image);//將適配器設置給recyclerview控件recyclerview.setAdapter(recyclerViewAdapter);//新建一個StaggeredGridLayoutManager布局管理器,設置參數:1.顯示的列數   2.顯示布局的方向(水平或垂直)//StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false);//將布局管理器設置給recyclerveiw控件//recyclerview.setLayoutManager(staggeredGridLayoutManager);recyclerview.setLayoutManager(linearLayoutManager);//給適配器添加我們暴露的監聽方法recyclerViewAdapter.setOnRecyclerViewItemClickListener(this);}//實現我們的監聽接口里的方法,在這里獲得數據,對數據進行操作@Overridepublic void onItemClick(View view, int img) {//創建一個intent,指明跳轉目標類Intent intent = new Intent(this, ImageDetail.class);//拿到數據傳給intentintent.putExtra("image", img);//啟動ActivitystartActivity(intent);}
}

ImageDetail 類

package com.example.tabulation;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;public class ImageDetail extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.imagedetail);Intent intent = getIntent();int image = intent.getIntExtra("image", R.mipmap.ic_launcher);ImageView imag = (ImageView) findViewById(R.id.details_img);imag.setImageResource(image);}
}

RecyclerViewAdapter 類

package com.example.tabulation;import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;import androidx.recyclerview.widget.RecyclerView;//讓我們的適配器繼承自RecyclerView.Adapter<>,并指定泛型為我們適配器的類名.ViewHolder,
// ViewHolder繼承自RecyclerView.ViewHolder,并實現每個繼承要實現的方法
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements View.OnClickListener {private Context context;private int[] image;//聲明一個這個接口的變量private onRecyclerViewItemClickListener mOnRecyclerViewItemClickListener=null;//構造函數,主要用于接受數據,方便我們在適配器中對數據操作public RecyclerViewAdapter(Context context, int[] image) {this.context = context;this.image = image;}//創建ViewHolder,我們需要在這個方法中給新建一個view對象,再初始化一個ViewHolder對象,將view對象傳入//然后返回一個ViewHolder對象@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//創建一個view對象(通過布局填充器將布局文件轉化為view對象)//View view = View.inflate(context, R.layout.waterfall_item, null);View view = View.inflate(context, R.layout.imagedetail, null);//初始化一個ViewHolder對象,傳入view對象ViewHolder viewHolder = new ViewHolder(view);view.setOnClickListener(this);//將ViewHolder對象返回出去return viewHolder;}//綁定ViewHolder,我們需要在這個方法中給控件設置數據@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {//給ImageView控件設置數據holder.mImageView.setImageResource(image[position]);//給每個itemview添加一個Tag,傳遞數據holder.itemView.setTag(image[position]);holder.mTextViewID.setText(String.valueOf(position + 1));holder.mTextViewName.setText("未知名稱");}//獲取item的條目總數@Overridepublic int getItemCount() {//直接返回圖片數組的長度即可return image.length;}//將點擊事件轉移給外面的調用者@Overridepublic void onClick(View v) {if (mOnRecyclerViewItemClickListener != null) {//通過v.getTag()接受數據mOnRecyclerViewItemClickListener.onItemClick(v, (Integer) v.getTag());}}//我們自定義的ViewHolder類,繼承自RecyclerView.ViewHolderpublic class ViewHolder extends RecyclerView.ViewHolder {private final TextView mTextViewID;private final TextView mTextViewName;private final ImageView mImageView;public ViewHolder(View itemView) {super(itemView);mTextViewID = (TextView) itemView.findViewById(R.id.labelID);mTextViewName = (TextView) itemView.findViewById(R.id.pokemonName);//通過傳過來的view對象,我們來實例化控件mImageView = (ImageView) itemView.findViewById(R.id.details_img);}}//自定義一個監聽的接口,里面包含itemclick的監聽方法,主要用于拿數據,方便外部調用拿數據public interface onRecyclerViewItemClickListener{void onItemClick(View view,int img);}//定義一個設置Listener的方法(),作用是暴露給外面的調用者,方便調用public void setOnRecyclerViewItemClickListener(onRecyclerViewItemClickListener onRecyclerViewItemClickListener) {mOnRecyclerViewItemClickListener = onRecyclerViewItemClickListener;}
}

tabulation_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:padding="3dp"android:layout_width="match_parent"android:layout_height="match_parent"><!--android:adjustViewBounds="true":設置View控件的寬高比等于圖片的寬高比(圖片不失真)對圖片進行等比例放縮。android:scaleType="centerCrop":設置控件的中心與圖片的中心一致,對圖片進行等比例放縮,直到填充滿view控件。一般這兩個屬性搭配使用--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"/><ImageViewandroid:id="@+id/show_img"android:adjustViewBounds="true"android:scaleType="centerCrop"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

imagedetail.xml

<?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"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="10sp"android:orientation="horizontal"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal"android:layout_gravity="center"><TextViewandroid:id="@+id/labelID"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1"android:text="編號"android:textSize="16sp" /><TextViewandroid:id="@+id/pokemonName"android:layout_width="250dp"android:layout_height="match_parent"android:layout_weight="1"android:text="名字"android:textSize="16sp" /></LinearLayout><ImageViewandroid:id="@+id/details_img"android:adjustViewBounds="true"android:scaleType="centerCrop"android:layout_width="50dp"android:layout_height="50dp"/></LinearLayout></LinearLayout>

activity——main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerview"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42897.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42897.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42897.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決 Maven 創建 Spring Boot 項目時出現 “Cannot access alimaven“ 錯誤的方法

系列文章目錄 文章目錄 系列文章目錄前言一、確認 Maven 配置二、創建 Spring Boot 項目三、修改項目的 Maven 配置四、清除 Maven 本地倉庫五、重新構建項目總結前言 Maven 是 Java 項目的構建工具,而 Spring Boot 則是用于快速構建 Spring 應用程序的框架。但有時,在創建 …

Redis擴容與一致性Hash算法解析

推薦閱讀 AI文本 OCR識別最佳實踐 AI Gamma一鍵生成PPT工具直達鏈接 玩轉cloud Studio 在線編碼神器 玩轉 GPU AI繪畫、AI講話、翻譯,GPU點亮AI想象空間 資源分享 「java、python面試題」來自UC網盤app分享&#xff0c;打開手機app&#xff0c;額外獲得1T空間 https://dr…

Java導出數據到Excel

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要導出數據到Excel?二、使用Java導出數據到Excel的步驟1.添加依賴2.編寫導出邏輯3.運行測試總結前言 當今數據處理的場景中,Excel仍然是一個不可或缺的工具,用于存儲、分析和共享數據。在Java應用程序中,有時候需要將數…

神經網絡基礎-神經網絡補充概念-04-梯度下降法

概念 梯度下降法是一種常用的優化算法&#xff0c;用于在機器學習和深度學習中更新模型參數以最小化損失函數。它通過迭代地調整參數&#xff0c;沿著損失函數的負梯度方向移動&#xff0c;從而逐步逼近損失函數的最小值。 基本思想 梯度下降法的基本思想是&#xff1a;在每…

JVM——引言+JVM內存結構

引言 什么是JVM 定義: Java VirtualMachine -java 程序的運行環境 (ava 二進制字節碼的運行環境) 好處: 一次編寫&#xff0c;到處運行自動內存管理&#xff0c;垃圾回收功能數組下標越界檢查&#xff0c;多態 比較: jvm jre jdk 學習jvm的作用 面試理解底層實現原理中…

神經網絡基礎-神經網絡補充概念-63-殘差網絡

概念 殘差網絡&#xff08;Residual Network&#xff0c;ResNet&#xff09;是一種深度卷積神經網絡結構&#xff0c;旨在解決深層網絡訓練中的梯度消失和梯度爆炸問題&#xff0c;以及幫助訓練非常深的網絡。ResNet 在2015年被提出&#xff0c;其核心思想是引入了"殘差塊…

前端-ES6

let 和 const 為了解決var的作用域的問題&#xff0c;而且var 有變量提升&#xff0c;會出現全局污染的問題 let 塊狀作用域&#xff0c;并且不能重復聲明const 一般用于聲明常量&#xff0c;一旦被聲明無法修改&#xff0c;但是const 可以聲明一個對象&#xff0c;對象內部的…

工作時使用redis,kafka查閱的資料鏈接

不分先后 一 、redis查閱地址 一篇文章講清楚RedisRedis原理介紹一篇詳文帶你入門 Redis內存耗盡后Redis會發生什么Redis 深入了解鍵的過期時間redis持久化機制Redis延遲問題全面排障指南一文搞定Redis高級特性與性能調優Redis 在 Linux 系統的配置優化Redis 的延遲問題&…

SpringBoot-lombok

為什么要使用lombok? Lombok是一個通過注解以達到減少代碼的Java庫,如通過注解的方式減少getter,setter方法,構造方法等。通過注解的形式自動生成構造器、getter/setter、equals、hashcode、toString等方法&#xff0c;并可以自動化生成日志變量&#xff0c;簡化java開發、提高…

NLP文本匹配任務Text Matching [有監督訓練]:PointWise(單塔)、DSSM(雙塔)、Sentence BERT(雙塔)項目實踐

NLP文本匹配任務Text Matching [有監督訓練]&#xff1a;PointWise&#xff08;單塔&#xff09;、DSSM&#xff08;雙塔&#xff09;、Sentence BERT&#xff08;雙塔&#xff09;項目實踐 0 背景介紹以及相關概念 本項目對3種常用的文本匹配的方法進行實現&#xff1a;Poin…

pyqt5 如何修改QplainTextEdit 背景色和主窗口的一樣顏色

如果您希望將 QPlainTextEdit 的背景顏色設置為與窗口背景相似的灰色&#xff0c;您可以使用窗口的背景顏色作為基準來設置 QPlainTextEdit 的背景顏色。以下是一個示例代碼&#xff0c;展示如何實現這一點&#xff1a; from PyQt5.QtWidgets import QApplication, QMainWindo…

模型預測筆記(一):數據清洗分析及可視化、模型搭建、模型訓練和預測代碼一體化和對應結果展示(可作為baseline)

模型預測 一、導入關鍵包二、如何載入、分析和保存文件三、修改缺失值3.1 眾數3.2 平均值3.3 中位數3.4 0填充 四、修改異常值4.1 刪除4.2 替換 五、數據繪圖分析5.1 餅狀圖5.1.1 繪制某一特征的數值情況&#xff08;二分類&#xff09; 5.2 柱狀圖5.2.1 單特征與目標特征之間的…

Mysql性能優化:什么是索引下推?

導讀 索引下推&#xff08;index condition pushdown &#xff09;簡稱ICP&#xff0c;在Mysql5.6的版本上推出&#xff0c;用于優化查詢。 在不使用ICP的情況下&#xff0c;在使用非主鍵索引&#xff08;又叫普通索引或者二級索引&#xff09;進行查詢時&#xff0c;存儲引擎…

容斥原理 博弈論(多種Nim游戲解法)

目錄 容斥原理容斥原理的簡介能被整除的數&#xff08;典型例題&#xff09;實現思路代碼實現擴展&#xff1a;用DPS實現 博弈論博弈論中的相關性質博弈論的相關結論先手必敗必勝的證明Nim游戲&#xff08;典型例題&#xff09;代碼實現 臺階-Nim游戲&#xff08;典型例題&…

什么叫做云計算

什么叫做云計算 相信大多數人對云計算或者是云服務的認識還停留在僅僅聽過這個名詞&#xff0c;但是對其真正的定義或者意義還不甚了解的層面。甚至有些技術人員&#xff0c;如果日常的業務不涉及到云服務&#xff0c;可能對其也只是一知半解的程度。首先云計算準確的講只是云服…

Java多態詳解(1)

多態 多態的概念 所謂多態&#xff0c;通俗地講&#xff0c;就是多種形態&#xff0c;具體點就是去完成某個行為&#xff0c;當不同的對象去完成時會產生出不同的狀態。 比如&#xff1a; 這一時間爆火的“現代紀錄片”中&#xff0c;麥克阿瑟總是對各種“名人”有不同的評價&…

算法通關村第十關 | 歸并排序

1. 歸并排序原理 歸并排序&#xff08;MERARE-SORT&#xff09;簡單來說就是將大的序列先視為若干個比較小的數組&#xff0c;分成比較小的結構&#xff0c;然后是利用歸并的思想實現的排序方法&#xff0c;該算法采用經典的分治策略&#xff08;分就是將問題分成一些小的問題分…

【Axure模板】APP幫助中心原型,在線客服意見反饋模塊高保真原型

作品概況 頁面數量&#xff1a;共 10 頁 兼容軟件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 應用領域&#xff1a;原型設計模板 作品申明&#xff1a;頁面內容僅用于功能演示&#xff0c;無實際功能 作品特色 該模板作品為APP幫助與客服的通用模塊&#xff0c;…

golang操作excel的高性能庫——excelize/v2

目錄 介紹文檔與源碼安裝快速開始創建 Excel 文檔讀取 Excel 文檔打開數據流流式寫入 [相關 Excel 開源類庫性能對比](https://xuri.me/excelize/zh-hans/performance.html) 介紹 Excelize是一個純Go編寫的庫&#xff0c;提供了一組功能&#xff0c;允許你向XLAM / XLSM / XLS…

【Kubernetes】Kubernetes的Pod控制器

Pod控制器 一、Pod 控制器的概念1. Pod 控制器及其功用2. Pod 控制器有多種類型2.1 ReplicaSet2.2 Deployment2.3 DaemonSet2.4 StatefulSet2.5 Job2.6 Cronjob 3. Pod 與控制器之間的關系 二、Pod 控制器的使用1. Deployment2. SatefulSet2.1 為什么要有headless&#xff1f;2…