《Android Dev Guide》系列教程18:通過適配器給AdapterView綁定資料

來源:互聯網
上載者:User

《Android Dev Guide》系列教程18:通過適配器給AdapterView綁定資料

懶骨頭(http://blog.csdn.com/iamlazybone)

AdapterView是ViewGroup的一個子類,由一個適配器,和綁定到適配器的某些類型的資料群組合而成。當你需要顯示一些儲存的資料時,AdapterView是非常有用的。

Gallery、ListView和Spinner便是AdapterView的例子,他們可以讓你使用一些特殊格式的資料並且用一種特定的方式來顯示這些資料。

ApapterView對象有兩個主要職責:

@ 用資料來填充視圖

@ 處理使用者的操作事件

 

 

 給視圖填充資料

把資料插入到視圖裡,通常是由綁定適配器的AdapterView類來完成的,通常是從一些額外的儲存中獲得的資料,比如代碼來提供或者從裝置的資料庫中查詢的結果集。例如下面的代碼:

1-使用一個已存在的View建立一個Spinner,然後綁定一個ArrayAdapter類來從本地資源裡讀取顏色列表。

2-建立另一個Spinner對象,綁定到一個SimpleCursorAdapter類,然後從手機的連絡人清單讀取連絡人的名字。

// Get a Spinner and bind it to an ArrayAdapter that<br />// references a String array.<br />Spinner s1 = (Spinner) findViewById(R.id.spinner1);<br />ArrayAdapter adapter = ArrayAdapter.createFromResource(<br /> this, R.array.colors, android.R.layout.simple_spinner_item);<br />adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);<br />s1.setAdapter(adapter);<br />// Load a Spinner and bind it to a data query.<br />private static String[] PROJECTION = new String[] {<br /> People._ID, People.NAME<br /> };<br />Spinner s2 = (Spinner) findViewById(R.id.spinner2);<br />Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);</p><p>SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,<br /> android.R.layout.simple_spinner_item, // Use a template<br /> // that displays a<br /> // text view<br /> cur, // Give the cursor to the list adapter<br /> new String[] {People.NAME}, // Map the NAME column in the<br /> // people database to...<br /> new int[] {android.R.id.text1}); // The "text1" view defined in<br /> // the XML template</p><p>adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);<br />s2.setAdapter(adapter2); 

注意:

在PROJECTION欄位中,你必須有一個People._ID列,否則會拋出一個異常。

如果期間你修改了資料,那麼需要調用一下notifyDataSetChanged()方法。這樣視圖便會做出相應更新。

 

 

 處理使用者的選擇事件

通過實現AdapterView.onItemClickListener監聽器類,來擷取使用者的選擇。

// Create a message handling object as an anonymous class.<br />private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {<br /> public void onItemClick(AdapterView parent, View v, int position, long id)<br /> {<br /> // Display a messagebox.<br /> Toast.makeText(mContext,"You've got an event",Toast.LENGTH_SHORT).show();<br /> }<br />};<br />// Now hook into our object and set its onItemClickListener member<br />// to our class handler object.<br />mHistoryView = (ListView)findViewById(R.id.history);<br />mHistoryView.setOnItemClickListener(mMessageClickedHandler);  

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.