Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android數據展示之ListView

Android數據展示之ListView

編輯:關於Android編程

Android應用程序中經常需要使用ListView展示數據,一個ListView通常將數據填充到布局文件中,在填充的過程中需要知道連接數據與ListView的適配器。適配器是一個連接數據和AdapterView(ListView是一個典型的AdapterView)的橋梁,通過它能有效地實現數據與AdapterView的分離設置,使AdapterView與數據的綁定更加簡便,修改更加方便。常用的適配器有三種ArrayAdapter,SimpleAdapter和BaseAdapter。   ArrayAdapter實現ListView   用ArrayAdapter可以實現簡單的ListView的數據綁定。默認情況下,ArrayAdapter綁定每個對象的toString值到layout中預先定義的TextView控件上。ArrayAdapter的使用非常簡單。   在布局文件中新增一個ListView     <ListView     android:id="@+id/list_Test"     android:layout_width="match_parent"     android:layout_height="wrap_content" />  activity中代碼的實現,獲取ListView沒什麼好說的,主要是setAdapter方法,第二個參數就是Android系統中內置布局文件,如果是android.R.layout.simple_list_item_1,就直接是一行文字,我只列舉了三個,其他的可以自行測試:   String[] listArrStrings=new String[]{"星期一","星期二","星期三"}; listView=(ListView) findViewById(R.id.list_Test);   listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice, listArrStrings)); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);     listView.setOnItemClickListener(new OnItemClickListener() {       @Override     public void onItemClick(AdapterView<?> parent, View view,             int position, long id) {         // TODO Auto-generated method stub         String nameString=(String) parent.getItemAtPosition(position);         setTitle("今天是:"+nameString);                          }  實現結果如下:        重新改變一下代碼,改變一下填充的默認的系統的布局文件,可以設置單選還是多選:     listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked, listArrStrings));     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);           listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked, listArrStrings));     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);  效果如下:         SimpleAdapter實現ListView             ListView中每個View布局都一樣,這個時候需要首先新建一個布局文件simpleitem.xml     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="horizontal" >       <ImageView         android:id="@+id/itemImage"         android:layout_width="wrap_content"         android:layout_height="match_parent"         android:src="@drawable/ic_launcher" />       <LinearLayout         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:orientation="vertical"         android:paddingLeft="10dp">           <TextView             android:id="@+id/itemTitle"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:text="標題"             android:textSize="25sp" />           <TextView             android:id="@+id/itemText"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:text="xxxxxxxxx" />     </LinearLayout>   </LinearLayout>   這個時候代碼調用也很簡單,跟ArrayAdapter類似,SimpleAdapter,最後兩個參數,一個是map中的鍵,一個對應的simpleitem中的id:     ListView listView=(ListView) findViewById(R.id.list_simple);     ArrayList<HashMap<String, String>> arrayList=new ArrayList<HashMap<String,String>>();     for (int i = 0; i <10; i++) {         HashMap<String, String> map=new HashMap<String, String>();         map.put("itemTitle", "標題"+i);         map.put("itemText", "內容"+i);         arrayList.add(map);     }           SimpleAdapter simpleAdapter=new SimpleAdapter(this, arrayList, R.layout.simpleitem, new String[]{"itemTitle","itemText"},new             int[]{R.id.itemTitle,R.id.itemText});     listView.setAdapter(simpleAdapter);  BaseAdapter實現ListView   BaseAdapter可擴展性,可以再View中加入自己定義的一些操作事件,使用的時候需要實現BaseAdapter類,定義一個自己的類;     class MyBaseAdapter extends BaseAdapter {       // 定義List的長度     @Override     public int getCount() {         // TODO Auto-generated method stub         return 100;     }       @Override     public Object getItem(int position) {         // TODO Auto-generated method stub         return null;     }       @Override     public long getItemId(int position) {         // TODO Auto-generated method stub         return 30;     }       @Override     public View getView(int position, View convertView, ViewGroup parent) {         // TODO Auto-generated method stub          TextView textView = new TextView(BaseActivity.this);          textView.setText("測試");          textView.setTextColor(Color.BLUE);          textView.setTextSize(20);          return textView;           } }       Activity中調用代碼:     ListView listView = (ListView) findViewById(R.id.list_base);         listView.setAdapter(new MyBaseAdapter());      上面其實用BaseAdapter實現了ArrayAdapter的功能,同樣的可以使用BaseAdapter實現SimpleAdapter的功能:   還是同樣的調用simplte這個布局,重寫一下getView()方法:     View view = null;         if (convertView == null) {             LayoutInflater inflater = BaseActivity.this.getLayoutInflater();             view = inflater.inflate(R.layout.simpleitem, null);         }else{             view=convertView;         }         TextView tvTitleTextView=(TextView) view.findViewById(R.id.itemTitle);         TextView tvTextView=(TextView) view.findViewById(R.id.itemText);         tvTitleTextView.setTextSize(20);         tvTitleTextView.setText("標題---"+position);         tvTitleTextView.setTextColor(Color.RED);         tvTextView.setTextSize(15);         tvTextView.setText("內容----"+position);         return view;   
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved