发布时间:2026-09-28 18:39:01 浏览次数:1
下面是针对这个话题的完整攻略:
AdapterView是Android中的一个基础组件,用于展示列表、网格等数据结构的UI组件,它可以通过Adapter来管理数据和视图的绑定关系,支持各种自定义的视图展示方式,是开发常用UI组件之一。
Android中提供了多种AdapterView的子类,常用的有以下几种:
最常用的列表展示组件,用于展示具有固定单行或多行的多项数据。
网格展示组件,用于展示二维数据。
下拉列表组件,用于展示从多个选项中选择一个数据。
类似于ListView,不过展示方式为水平滚动的多行列表。
使用AdapterView的一般步骤如下:
下面将通过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进行更详细的自定义,可以通过实现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元素的交织展示,和自定义布局。