2014-07-06 53 views
0

當我們使用ArrayAdapter時,我們將類似列表的東西傳遞給超類。但基礎適配器構造函數沒有任何參數。這個類如何找到數據集?我在一些例子中已經看到,他們只是定義一個數組並覆蓋函數而不指定列表作爲數據集。那麼班級如何理解這是數據集呢?如果我們在派生類中定義多個列表會怎麼樣?什麼是BaseAdapter的數據集

編輯: 我想我應該澄清我的問題。當我們使用ArrayAdapter時,數據集被指定,程序知道迭代和調用每個getView。但是在BaseAdapter中,我們只定義一個列表並覆蓋4個函數,它可以工作!我的問題是爲什麼它工作?!我們沒有指定數據集,我們只是指定了getView主體,它返回一個視圖。我不明白程序如何找到數據集。

回答

0

我好了後上的代碼的更多考慮,認爲這是基礎轉接器是如何工作的:

它循環與「位置」參數的getView()函數是從0到什麼是getCount將返回()。 我們必須重寫getCount()併發送最後一項dataSet的正確索引。每次調用getView()時,都可以根據當前位置使用視圖和我們想要的任何列表。 我認爲ArrayAdapter和BaseAdapter之間的主要區別在於ArrayAdapter在將它傳遞給超類時會查找列表的最後一個索引,但在基本Adapter中我們應該定義最後一個索引。 getView()的實現是一樣的,我們可以在getView中使用我們想要的任何列表。訣竅只是關於位置參數。

0

由於文檔解釋得好:

公共基類共同實施的一個適配器

意味着你必須做的實現。

http://developer.android.com/reference/android/widget/BaseAdapter.html

+0

我已經閱讀過。我唯一實現的是getView()。 getview被稱爲列表中的每一項。我的問題是這個清單。我們沒有將它指定爲dataSet,那麼AdapterView如何將它視爲數據集,然後調用getView? – user2808671

+0

你必須定義它,當你擴展類,就像這個類的一些變量一樣,改變onCreate方法,爲數據創建你自己的setter,實現其餘的。 – Lectem

+0

1.對象列表在派生類中定義。 2. getView和一些其他功能被實現。 3.完成 爲所有列表項目調用getView ...我們在哪裏指定數據集是什麼?你能告訴我一個指定AdapterView或BaseClass數據集的例子嗎? – user2808671

0

這是如何發現類數據集?

它沒有。您的BaseAdapter的子類管理數據集。

如果我們在派生類中定義多個列表會怎麼樣?

只要你正確地貫徹abstractAdapter方法(getCount()getView()getItem()getItemId(),...),你如何管理自己的數據是由你。

+0

在ArrayAdapter中調用getView的每個項目。對於BaseAdapter也是如此。但是如何?我們不會將此列表傳遞給Baseadapter中的超類。在例子中我看到只有一個getView函數和一個列表。沒有什麼像循環調用每個人的getView。什麼調用getView和什麼DataSet? – user2808671

+0

@ user2808671:「什麼調用getView」 - 使用「Adapter」的'AdapterView',比如'ListView'。 「爲什麼DataSet?」 - 任何你想要的。 'ArrayAdapter'適應數組。 'CursorAdapter'改編'Cursors'。我曾經寫過一個修改了「JSONArray」的JSONAdapter。等等。由BaseAdapter的子類的開發者來決定數據集是什麼以及如何滿足'Adapter'合同。 – CommonsWare

+0

那麼,只需定義一個帶有變量的列表並在getView()主體中返回一個textView即可完成這項工作!在getView()我只寫textView.setText(列表[位置])。但是,AdapterView爲getView調用了什麼?你說我們自己確定?我沒有找到一行代碼來確定這一點。但該計劃的作品。只有一個列表和一個getView函數,adapterView調用所有列表的getView。我問如何適配器視圖知道如何調用getView的列表? – user2808671

相關問題