Android超详细讲解组件AdapterView的使用

发布时间:2026-09-28 18:39:01 浏览次数:1

下面是针对这个话题的完整攻略:

Android超详细讲解组件AdapterView的使用

什么是AdapterView

AdapterView是Android中的一个基础组件,用于展示列表、网格等数据结构的UI组件,它可以通过Adapter来管理数据和视图的绑定关系,支持各种自定义的视图展示方式,是开发常用UI组件之一。

AdapterView的主要子类

Android中提供了多种AdapterView的子类,常用的有以下几种:

ListView

最常用的列表展示组件,用于展示具有固定单行或多行的多项数据。

GridView

网格展示组件,用于展示二维数据。

Spinner

下拉列表组件,用于展示从多个选项中选择一个数据。

Gallery

类似于ListView,不过展示方式为水平滚动的多行列表。

使用AdapterView的步骤

使用AdapterView的一般步骤如下:

  1. 准备要展示的数据,例如一个包含若干item的List等。
  2. 编写自定义的Adapter实现类,用于绑定数据和视图,并将该Adapter与AdapterView进行关联。
  3. 通过侦听器(Listener)等方式**AdapterView的选中事件等。

下面将通过ListView进行示例展示。

示例一:ListView的基本使用

在Activity中设置ListView的基本使用代码如下:

public class MainActivity extends AppCompatActivity {    private ArrayList<String> mDataList;    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        initView();    }    private void initData() {        mDataList = new ArrayList<>();        mDataList.add("item1");        mDataList.add("item2");        mDataList.add("item3");    }    private void initView() {        mListView = findViewById(R.id.list_view);        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList);        mListView.setAdapter(adapter);    }}

其中,Android.R.layout.simple_list_item_1是一个简单的内置布局,用于展示一个TextView。

在该示例中,我们先准备数据(三个字符串),然后在initView()中创建一个ArrayAdapter实例,并将其设置到ListView中。此时,列表就会自动展示三个item的内容。

示例二:自定义ListView的实现

如果想对ListView进行更详细的自定义,可以通过实现BaseAdapter或其子类实现自定义Adapter。

下面是一个自定义Adapter的示例代码:

public class MyAdapter extends BaseAdapter {    private ArrayList<String> mDataList;    private LayoutInflater mInflater;    public MyAdapter(Context context, ArrayList<String> mDataList) {        this.mDataList = mDataList;        this.mInflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return mDataList == null ? 0 : mDataList.size();    }    @Override    public Object getItem(int i) {        return mDataList == null ? null : mDataList.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View convertView, ViewGroup viewGroup) {        View view;        ViewHolder holder;        if (convertView == null) {            view = mInflater.inflate(R.layout.item_list_view, null);            holder = new ViewHolder();            holder.mTextView = view.findViewById(R.id.text_view);            view.setTag(holder);        } else {            view = convertView;            holder = (ViewHolder) view.getTag();        }        holder.mTextView.setText(mDataList.get(i));        return view;    }    static class ViewHolder {        TextView mTextView;    }}

该示例中,我们对ListView的item进行了自定义,每个item展示一个TextView和ImageView,其中ImageView用于显示删除该item。

在该示例中,我们需要在layout中新增一个显示TextView和ImageView的布局文件item_list.xml,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="match_parent" android:layout_height="match_parent">    <TextView        android:id="@+id/text_view"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_weight="1"/>    <ImageView        android:id="@+id/image_view"        android:src="@android:drawable/ic_menu_delete"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/></LinearLayout>

在上面的代码中,我们定义了一个LinearLayout,水平方向展示一个TextView和一个ImageView。最后,在自定义Adapter中,我们将该布局文件inflate,并赋给ViewHolder中的相应控件。

完整的Activity代码如下:

public class MainActivity extends AppCompatActivity {    private ArrayList<String> mDataList;    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        initView();    }    private void initData() {        mDataList = new ArrayList<>();        mDataList.add("item1");        mDataList.add("item2");        mDataList.add("item3");    }    private void initView() {        mListView = findViewById(R.id.list_view);        MyAdapter adapter = new MyAdapter(this, mDataList);        mListView.setAdapter(adapter);    }}

通过上面的自定义Adapter,我们就可以展示更加复杂的ListView列表了,包括各种UI元素的交织展示,和自定义布局。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477