你的位置:首页 > 操作系统

[操作系统]Android 常用数据适配器ArrayAdapter


接着上篇文章《Android 采用Layout Inflater创建一个View对象》,本文采用常用数据适配器ArrayAdapter

新建项目后,在layout文件夹下新建list_item.

<??><LinearLayout ="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="horizontal" >  <ImageView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/ic_launcher" />  <TextView    android:id="@+id/tv"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /></LinearLayout>

接着在MainActivity中添加代码:

package com.wuyudong.arrayadapter;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {  private static String[] names = { "功能1", "功能2", "功能3", "功能4", "功能5" };  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    ListView lv = (ListView) findViewById(R.id.lv);     lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item,        R.id.tv, names));  }}

运行一下:

ArrayAdapter的构造函数较多,其中的参数的含义可以参见源代码

  /**   * Constructor   *   * @param context The current context.   * @param resource The resource ID for a layout file containing a TextView to use when   *         instantiating views.   */  public ArrayAdapter(Context context, int resource) {    init(context, resource, 0, new ArrayList<T>());  }  /**   * Constructor   *   * @param context The current context.   * @param resource The resource ID for a layout file containing a layout to use when   *         instantiating views.   * @param textViewResourceId The id of the TextView within the layout resource to be populated   */  public ArrayAdapter(Context context, int resource, int textViewResourceId) {    init(context, resource, textViewResourceId, new ArrayList<T>());  }  /**   * Constructor   *   * @param context The current context.   * @param resource The resource ID for a layout file containing a TextView to use when   *         instantiating views.   * @param objects The objects to represent in the ListView.   */  public ArrayAdapter(Context context, int resource, T[] objects) {    init(context, resource, 0, Arrays.asList(objects));  }  /**   * Constructor   *   * @param context The current context.   * @param resource The resource ID for a layout file containing a layout to use when   *         instantiating views.   * @param textViewResourceId The id of the TextView within the layout resource to be populated   * @param objects The objects to represent in the ListView.   */  public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) {    init(context, resource, textViewResourceId, Arrays.asList(objects));  }  /**   * Constructor   *   * @param context The current context.   * @param resource The resource ID for a layout file containing a TextView to use when   *         instantiating views.   * @param objects The objects to represent in the ListView.   */  public ArrayAdapter(Context context, int resource, List<T> objects) {    init(context, resource, 0, objects);  }  /**   * Constructor   *   * @param context The current context.   * @param resource The resource ID for a layout file containing a layout to use when   *         instantiating views.   * @param textViewResourceId The id of the TextView within the layout resource to be populated   * @param objects The objects to represent in the ListView.   */  public ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) {    init(context, resource, textViewResourceId, objects);  }