zoukankan      html  css  js  c++  java
  • ListView的Adapter使用 之 初学ArrayAdapter<String>

    Android中Adapter我是这么理解的,是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面。

    Adapter有很多种,有ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter.

    我在项目中用到过的就ArrayAdapter<T>, (数组也可以是对象数组),BaseAdapter(所有Adapter的基类),SimpleAdapter,CursorAdapter(数据来源是cursor),SimpleCursorAdapter,感觉有必要总结一下。

    最基本的要数sdk官网上面给的这个代码例子了http://developer.android.com/resources/tutorials/views/hello-listview.html。

    我自己写的一个例子,先上图,再贴上代码:

    1. package com.cz.list.demo; 
    2.  
    3. import android.app.Activity; 
    4. import android.os.Bundle; 
    5. import android.widget.ArrayAdapter; 
    6. import android.widget.ListView; 
    7.  
    8. public class ArrayListDemo extends Activity { 
    9.     private ListView listView; 
    10.     private String[] adapterData; 
    11.  
    12.     /** Called when the activity is first created. */ 
    13.     @Override 
    14.     public void onCreate(Bundle savedInstanceState) { 
    15.         super.onCreate(savedInstanceState); 
    16.         setContentView(R.layout.array_list_layout); 
    17.  
    18.         /* 找到这个listView */ 
    19.         listView = (ListView) findViewById(R.id.array_list); 
    20.  
    21.         /* 我们要在listView上面没条显示的数据,放到一个数组中 */ 
    22.         adapterData = new String[] { "Afghanistan", "Albania", "Algeria", 
    23.                 "American Samoa", "Andorra", "Angola", "Anguilla", 
    24.                 "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", 
    25.                 "Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain", 
    26.                 "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", 
    27.                 "Benin", "Bermuda", "Bhutan", "Bolivia", 
    28.                 "Bosnia and Herzegovina", "Botswana", "Bouvet Island" }; 
    29.  
    30.         /* 这个是数组string类型的数组 */ 
    31.         // ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>
    32.         // ArrayListDemo.this, android.R.layout.simple_list_item_1, 
    33.         // adapterData); 
    34.  
    35.         /* 设置ListView的Adapter */ 
    36.         listView.setAdapter(new ArrayAdapter<String>(ArrayListDemo.this, 
    37.                 android.R.layout.simple_list_item_1, adapterData)); 
    38.     } 

    代码中写的有注释,我觉得要解释的有几点,都是很基础的,高手就见笑了.

    1. 适配器的作用是数据和视图之间的桥梁

    2. 这个小例子是要显示一个数组,我们就用ArrayAdapter,数组适配器,数据的数据类型<>是String类型的,数据的数据类型还可以是其他的包括对象类型的

    3. ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
             ArrayListDemo.this, android.R.layout.simple_list_item_1,
             adapterData);

    这段代码是创建一个数组适配器的代码,里面有三个参数,第一个参数是上下文,就是当前的Activity, 第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个view上面;当然我们也可以自己布局,重新定义TextView的属性,例如new.xml.则调用时变成R.layout.new。  第三个参数就是我们要显示的数据。listView会根据这三个参数,遍历adapterData里面的每一条数据,读出一条,显示到第二个参数对应的布局中,这样就形成了我们看到的listView. 不知道刚学的同学懂了没有...

    ArrayAdapter参数不同带来的效果不同

    String[] array ={"a","b","c","d","e","f","g"}; 
    finalArrayAdapter<String> adapter =newArrayAdapter<String>(this, 
    android
    .R.layout.simple_list_item_1, array); 

    这种使用不能动态添加

    String[] array ={"a","b","c","d","e","f","g"};  
    ArrayList<String> lst =newArrayList<String>(); 
    lst
    .addAll(Arrays.asList(array)); 
    finalArrayAdapter<String> adapter =newArrayAdapter<String>(this,  
    android
    .R.layout.simple_list_item_1, lst);  
    可以

  • 相关阅读:
    spark机器学习从0到1特征抽取–Word2Vec(十四)
    spark机器学习从0到1特征抽取–CountVectorizer(十三)
    spark机器学习从0到1特征提取 TF-IDF(十二)
    spark机器学习从0到1机器学习工作流 (十一)
    vant ui中area组件踩坑记录
    免费CDN:jsDelivr+Github 使用方法
    使用vue-quill-editor实现富文本编辑器
    数组添加元素到特定位置
    scoop——强大的Windows命令行包管理工具
    radio单选框样式
  • 原文地址:https://www.cnblogs.com/qingblog/p/2553595.html
Copyright © 2011-2022 走看看