【Android Studio】ListView的使用
Java
Fruit.java
package com.example.myapplication; public class Fruit { private int imageId; private String name; public Fruit(String name, int imageId){ this.imageId=imageId; this.name=name; } public int getImageId() { return imageId; } public String getName() { return name; } }
FruitAdapter.java
package com.example.myapplication; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.List; public class FruitAdapter extends ArrayAdapter<Fruit> { private int resourceId; public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects){ super(context,textViewResourceId,objects); resourceId=textViewResourceId; } @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { //每次滑动屏幕时,就会调用这个方法,创建新的实例并布置好布局返回 //convertView会缓存之前的布局 Fruit fruit=getItem(position);//获取当前项的fruit实例 View view; ViewHolder viewHolder;//创建存储对象 //如果之前没有缓存过布局,就进行加载 if(convertView==null){ view=LayoutInflater.from(getContext()).inflate(resourceId,parent,false);//给当前实例加载传入的布局 viewHolder=new ViewHolder();//之前没有创建过,现在就创建一个存储对象 viewHolder.fruitImage=view.findViewById(R.id.fruit_image);//获取到ImageView实例 viewHolder.fruitName=view.findViewById(R.id.fruit_name);//获取到TextView实例 view.setTag(viewHolder);//将viewHolder存储到view中,为了下次使用 }else{ view=convertView; viewHolder= (ViewHolder) view.getTag(); } viewHolder.fruitImage.setImageResource(fruit.getImageId());//将当前实例的内容装入到实例当中 viewHolder.fruitName.setText(fruit.getName());//同上 return view;//将设定好的view布局传回去 } class ViewHolder{ ImageView fruitImage; TextView fruitName; } }
MainActivity.java
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private String[] data={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"}; private List<Fruit> fruitList=new ArrayList<Fruit>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init();//初始化数据 FruitAdapter fruitAdapter=new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);//创建适配器 ListView listView=findViewById(R.id.list_view);//获取ListView listView.setAdapter(fruitAdapter);//加载适配器 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fruit fruit=fruitList.get(position);//从列表中取得点击的实例,通过position Toast.makeText(MainActivity.this,fruit.getName(),Toast.LENGTH_SHORT).show(); } }); } private void init(){ //建立Fruit实例并装入fruitList中 for(int i=0;i<2;i++){ Fruit a=new Fruit(data[0], R.mipmap.ic_launcher); fruitList.add(a); Fruit b=new Fruit(data[1], R.mipmap.ic_launcher); fruitList.add(b); Fruit c=new Fruit(data[2], R.mipmap.ic_launcher); fruitList.add(c); Fruit d=new Fruit(data[3], R.mipmap.ic_launcher); fruitList.add(d); Fruit e=new Fruit(data[4], R.mipmap.ic_launcher); fruitList.add(e); Fruit f=new Fruit(data[5], R.mipmap.ic_launcher); fruitList.add(f); Fruit g=new Fruit(data[6], R.mipmap.ic_launcher); fruitList.add(g); Fruit h=new Fruit(data[7], R.mipmap.ic_launcher); fruitList.add(h); Fruit l=new Fruit(data[8], R.mipmap.ic_launcher); fruitList.add(l); Fruit j=new Fruit(data[9], R.mipmap.ic_launcher); fruitList.add(j); } } }
layout
activity_main.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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" /> </LinearLayout>
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="match_parent"> <ImageView android:id="@+id/fruit_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" /> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:gravity="center_vertical" /> </LinearLayout>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步