android ListView 與GridView 學習總結(五)

來源:互聯網
上載者:User

標籤:

ListView的使用總結
 基本使用:
   步驟:在布局檔案中定義一個ListView控制項-在活動中獲得ListView的執行個體-獲得適配器adapter的執行個體並且傳入三個參數-把配接器物件傳遞給listview執行個體

public class MainActivity extends Activity{ListView contactsView;ArrayAdapter<String> adapter;List<String> contactsList=new ArrayList<String>();protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);contactsView=(ListView)findViewById(R.id.contactsView);adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList);contactsView.setAdapter(adapter);readContacts();}public void readContacts(){Cursor cursor=null;try{ cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null); while(cursor.moveToNext()){String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));contactsList.add(name+"/n"+number); }}catch(Exception e){e.printStackTrace();}finally{if(cursor!=null){cursor.close();}}}}  

 自訂的ListView的使用
 步驟:自訂配接器適配類型-為每一個子項制定自訂布局(item——layout)-建立自訂的適配器,將每一個子項的內容指定給布局控制項-
 -獲得listview 的執行個體以及一個容納所有子項的list執行個體和適配器執行個體-把適配器傳入布局
例如一個水果自訂listview

public class Fruit(){    private String name;    private int ImageId;    public Fruit(String name,int ImageId){        this.name=name;        this.ImageId=ImageId;    }    public String getName(){        return name;    }    public int ImageId(){        return ImageId;    }}fruit_item.xml...<ImageView.../><TextView.../>...public class FruitAdapter extends ArrrayAdapter(Fruit){    private int resourceId;    public FruitAdapter(Context context,int textViewResourceId,List<Fruit>objects){        super(context,textViewResourceId,objects);        resourceId=textViewResourceId;    }    public View getView(int position,View convertView,ViewGroup parent){        Fruit fruit=getItem(position);        View view=LayoutInflater.from(getContext()).inflate(resourceId,null);        ImageView fruitImage=(ImageView) view.findViewById(R.id.fruit_image);        TextView fruitName=(TextView) view.findViewById(R.id.fruit_name);        fruitImage.setImageResource(fruit.getImageId());        fruiName.setText(fruit.getName());        return view;    }}mainactivity....

gridview的使用
幾個屬性:
android:numColumns="auto_fit" --------列數設定為自動
android:columnWidth="90dp",----------每列的寬度,也就是Item的寬度
android:stretchMode="columnWidth"------縮放與列寬大小同步
android:verticalSpacing="10dp"----------垂直邊距
android:horizontalSpacing="10dp"-------水平邊距

public void mainactivity extends Activity{    private GridView gv;    private List<Map<String,Objects>> data_list=new ArrayList<Map<String,Objects>>();    private SimpleAdapter<map<String,Objects>> adapter;    private int[] image={R.id...,.....,......};    private String[] name={.....};    public void onCreate(Bundle savedInstanceState){        super.(savedInstanceState);        setContentView(R.layout.test);        gv=(GridView)findViewById(R.id.gridview);        getdata();        String[] from={"image","text"};        int[] to={R.id.image,R.id.text};        adapter=new SimpleAdapter<map<String,Objects>>(mainactivity.this,data_list.R.layout.item,from,to);        gv.setAdapter(adapter);            }    public List<Map<String,Objects>> getdata(){        for(int i=0;i<image.length;i++){            Map<String,objects> map=new HashMap<String,Objects>();            map.put("image",image[i]);            map.put("text",name[i]);            data_list.add(map);            }            return data_list;        }}

補充關於hashmap:
這裡使用hashmap就相當於在自訂的listview中的自訂泛型 fruit目的都是為了能夠容納一對對的資料集合
  Map<String, Object> map = new HashMap<String, Object>();
            map.put("image", icon[i]);
            map.put("text", iconName[i]);
            data_list.add(map);此處的map就是一對資料的集合

android ListView 與GridView 學習總結(五)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.