// 重写getView()方法,这个方法在每个子项被滚动到屏幕内的时候会被调用 // convertView是优化加载item布局,viewHolder 是优化item内部加载控件优化
package com.example.adapter; public class Fruit { private String name; private int 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; } public Fruit(String name, int imageId) { this.name = name; this.imageId = imageId; } }-----------------------------
package com.example.adapter;
import android.content.Context;
import android.util.Log;
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 com.example.R;
import java.util.List;
public class FruitAdapter extends ArrayAdapter<Fruit> {
public FruitAdapter(@NonNull Context context, int resource) {
super(context, resource);
}
// public FruitAdapter(@NonNull Context context, int resource, @NonNull Fruit[] objects) {
// super(context, resource, objects);
// }
//
// public FruitAdapter(@NonNull Context context, int resource, int textViewResourceId, @NonNull Fruit[] objects) {
// super(context, resource, textViewResourceId, objects);
// }
//
private int resourceid;
public FruitAdapter(@NonNull Context context, int resource, @NonNull List<Fruit> objects) {
super(context, resource, objects);
resourceid=resource;
}
//
// public FruitAdapter(@NonNull Context context, int resource, int textViewResourceId, @NonNull List<Fruit> objects) {
// super(context, resource, textViewResourceId, objects);
// }
// 重写getView()方法,这个方法在每个子项被滚动到屏幕内的时候会被调用
// convertView是优化加载item布局,viewHolder 是优化item内部加载控件优化
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.w("adapter","position="+position+" ");
Fruit fruit=getItem(position);
View view;
ViewHolder viewHolder;
if(convertView==null){
Log.w("adapter","convertView==null position="+position);
view= LayoutInflater.from(getContext()).inflate(resourceid,parent,false);
viewHolder = new ViewHolder();
viewHolder.fruitImage=(ImageView)view.findViewById(R.id.frui_image);
viewHolder. tv =(TextView)view.findViewById(R.id.frui_name);
view.setTag(viewHolder);// 将ViewHolder存储在View中。
}else{
view=convertView;
viewHolder=(ViewHolder)view.getTag(); //重新获取ViewHolder
}
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.tv.setText(fruit.getName());
return view;
}
class ViewHolder{
ImageView fruitImage;
TextView tv;
}
}
------------------------------------------------------------------------
package com.example.adapter;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import com.example.R;
import com.example.base.BaseActivity;
import com.example.lifecycle.MainActivity;
import java.util.ArrayList;
import java.util.List;
public class FruitListActivity extends BaseActivity {
private List<Fruit> fruits=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fruit_list);
initFruits();
}
private void initFruits() {
for (int i=0;i<2;i++){
Fruit apple=new Fruit("Apple",R.drawable.ic_launcher_foreground);
fruits.add(apple);
Fruit banana=new Fruit("Banana",R.drawable.ic_launcher_foreground);
fruits.add(banana);
Fruit orange=new Fruit("Orange",R.drawable.ic_launcher_foreground);
fruits.add(orange);
Fruit grape=new Fruit("Grape",R.drawable.ic_launcher_foreground);
fruits.add(grape);
Fruit mango=new Fruit("Mango",R.drawable.ic_launcher_foreground);
fruits.add(mango);
}
FruitAdapter adapter= new FruitAdapter(FruitListActivity.this,
R.layout.list_item,fruits);
ListView listView=(ListView)findViewById(R.id.listView);
listView.setAdapter(adapter);
}
}
------------------------------------------------------------------------------------------
activity_fruit_list
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="com.example.adapter.FruitListActivity">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</androidx.constraintlayout.widget.ConstraintLayout>
---------------
list_item
<?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">
<ImageView
android:id="@+id/frui_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></ImageView>
<TextView
android:id="@+id/frui_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"></TextView>
</LinearLayout>