Android UI设计——ListView控件和ArrayAdapter适配器(二)

ArrayAdapter

  ArrayAdapter是Android中自己定义好的一种适配器,将数据添加到自己定义的View中。他自己定义的View中只有一个TextView。我们可以拿他的一个示例来看:

android.R.layout.simple_expandable_list_item_1, array:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft" android:textAppearance="?android:attr/textAppearanceListItem" android:gravity="center_vertical" />

  这是Android自己定义的一个View,我们需要将数据添加到这个View中,然后再将这个View添加到ListView中。
  ArrayAdapter是数组形式的数据添加到View中,下面我们,恩来看具体的添加步骤:

  • 定义要添加的数据,数据是数组形式的。
      这里我们定义成String数组,用来存储姓名。
private String[] array = {"张三", "李四", "王五", "赵六","马奇"};
  • 创建ArrayAdapter对象,将数据添加到View中。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1, array);

  在创建ArrayAdapter对象的过程中就已经将数据添加到View中。我们来分析一下构造器,看一下到底他是如何添加的……首先看一下他的构造器:
Android UI设计——ListView控件和ArrayAdapter适配器(二)_第1张图片
  我们这里采用的是他的第三个构造器:
  第一个参数Context context是指创建ArrayAdapter对象的Activity,这里我们直接传this即可,代表本类Activity的对象;
  第二个参数int resource是指布局文件,要将数组以什么羊形式的View显示在ListView中;
  第三个参数T[] objects是指显示的数据。
  

  • 将View添加到ListView 中,通过调用方法setAdapter(Adapter)完成.
 mListViewArray.setAdapter(adapter);

  ArrayAdapter的使用就是基于这三步的,其实总体来说,所有的Adapter适配器都是基于这三步的。下面我把我Activity中的代码完整的贴出来:

public class ListActivity extends Activity {
    private ListView mListViewArray;
    private String[] array = {"张三", "李四", "王五", "赵六","马奇"};
    private List<HashMap<String, String >> mData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        mListViewArray = (ListView) findViewById(R.id.listview_array);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, array);
        mListViewArray.setAdapter(adapter);
        }
   }

ListView布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.lishuang.administrator.ui0824.ListActivity">

   <ListView  android:id="@+id/listview_array" android:layout_width="match_parent" android:layout_height="wrap_content">
   </ListView>

</LinearLayout>

android.R.layout.simple_expandable_list_item_1, array:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft" android:textAppearance="?android:attr/textAppearanceListItem" android:gravity="center_vertical" />

结果:
Android UI设计——ListView控件和ArrayAdapter适配器(二)_第2张图片
  

你可能感兴趣的:(android,ListView,Adapter,UI设计)