Android GridView适配器如何编写

avatar
作者
猴君
阅读量:0

在Android中,创建一个自定义的GridView适配器需要遵循以下步骤:

  1. 创建一个新的Java类,继承自BaseAdapter。
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView;  import java.util.List;  public class CustomGridAdapter extends BaseAdapter {     // 数据源     private List<Item> items;     // 上下文     private Context context;      // 构造函数     public CustomGridAdapter(Context context, List<Item> items) {         this.context = context;         this.items = items;     }      // 获取数据源的大小     @Override     public int getCount() {         return items.size();     }      // 获取指定位置的数据     @Override     public Object getItem(int position) {         return items.get(position);     }      // 获取指定位置的ID     @Override     public long getItemId(int position) {         return position;     }      // 创建并返回指定位置的视图     @Override     public View getView(int position, View convertView, ViewGroup parent) {         ViewHolder viewHolder;          if (convertView == null) {             LayoutInflater inflater = LayoutInflater.from(context);             convertView = inflater.inflate(R.layout.grid_item, parent, false);              viewHolder = new ViewHolder();             viewHolder.imageView = convertView.findViewById(R.id.item_image);             viewHolder.textView = convertView.findViewById(R.id.item_text);              convertView.setTag(viewHolder);         } else {             viewHolder = (ViewHolder) convertView.getTag();         }          Item item = items.get(position);         viewHolder.imageView.setImageResource(item.getImageResource());         viewHolder.textView.setText(item.getText());          return convertView;     }      // ViewHolder类,用于缓存视图组件     static class ViewHolder {         ImageView imageView;         TextView textView;     } } 
  1. 创建一个布局文件grid_item.xml,用于定义GridView中的每个子项。
<?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:orientation="vertical"     android:padding="8dp">      <ImageView         android:id="@+id/item_image"         android:layout_width="100dp"         android:layout_height="100dp"         android:scaleType="centerCrop" />      <TextView         android:id="@+id/item_text"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginTop="8dp"         android:textSize="16sp" />  </LinearLayout> 
  1. 在Activity或Fragment中设置适配器。
import android.os.Bundle; import android.widget.GridView;  import androidx.appcompat.app.AppCompatActivity;  import java.util.ArrayList; import java.util.List;  public class MainActivity extends AppCompatActivity {     private GridView gridView;     private CustomGridAdapter adapter;     private List<Item> items;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          gridView = findViewById(R.id.gridview);          // 准备数据源         items = new ArrayList<>();         items.add(new Item(R.drawable.image1, "Item 1"));         items.add(new Item(R.drawable.image2, "Item 2"));         items.add(new Item(R.drawable.image3, "Item 3"));         // ... 添加更多数据          // 设置适配器         adapter = new CustomGridAdapter(this, items);         gridView.setAdapter(adapter);     } } 
  1. activity_main.xml中添加GridView。
<?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"     android:orientation="vertical">      <GridView         android:id="@+id/gridview"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:numColumns="auto_fit"         android:columnWidth="100dp"         android:horizontalSpacing="10dp"         android:verticalSpacing="10dp"         android:stretchMode="columnWidth" />  </LinearLayout> 

现在,你已经创建了一个自定义的GridView适配器,可以在你的应用中使用它来显示数据。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!