2012-01-28 2 views
3

Следуя более раннему вопросу, я пытаюсь получить несколько (виджеты или в этом случае WebView s) внутри GridView.ArrayAdapter для Webview внутри Gridview

Так что я не был уверен, как это сделать, будь то собственный адаптер (казалось бы, страшный в то время) или создать ArrayAdapter<WebView>.

Я не был уверен, что если ArrayAdapter может принять его так, или если он поддерживает только примитивные типы.

GridView contentGrid; 
LinearLayout contentLayout; 

WebWidget[] webWidgets; 

WebWidget web1; 
WebWidget web2; 
WebWidget web3; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    web1 = new WebWidget(this, "http://www.google.ie"); 
    web2 = new WebWidget(this, "http://www.facebook.com"); 
    web3 = new WebWidget(this, "http://www.youtube.ie"); 

    webWidgets = new WebWidget[]{web1,web2,web3}; 

    contentGrid = (GridView) findViewById(R.id.contentGrid); 

      //Heres my attempt at an adapter for webview 
    ArrayAdapter<WebView> adapter = new ArrayAdapter<WebView>(this, 
      android.R.layout.simple_list_item_1, webWidgets); 

    contentGrid.setAdapter(adapter); 

К сожалению, выходит строковая версия WebView.

Так что вопрос в том, могу ли я сделать это таким образом, или мне лучше сделать свой собственный CustomAdapter?

ПРИМЕЧАНИЕ. Может ли кто-нибудь указать какую-либо информацию относительно переменной второго конструктора? I.E android.R.layout.simple_list_item_1

ответ

1

Независимо от того, как вы реализуете свой Adapter, вы не можете надежно размещать прокручиваемые виджеты в других прокручиваемых виджетах, по крайней мере, там, где они прокручиваются в одном направлении. Поскольку и WebView, и GridView прокрутите вертикально, вы получите недостоверные результаты, пытаясь их объединить.

При том, что на некоторые из ваших утверждений и вопросов:

Я не был уверен, что если ArrayAdapter мог принять это так, или если она поддерживается только примитивные типы.

ArrayAdapter может адаптировать массив Java или ArrayList любого типа данных, который вам нравится.

К сожалению, что выходит, это строковая версия веб-представления ... ПРИМЕЧАНИЕ. Может ли кто-нибудь указать некоторую информацию о том, что такое переменная второго конструктора? Android.R.layout.simple_list_item_1 т.е.

Вторая переменная конструктор, что вы хотите, чтобы клетки в вашем GridView выглядеть. В вашем случае вы указываете встроенный ресурс макета, который является TextView. Следовательно, вы сообщаете Android, что хотите, чтобы все ваши ячейки сетки были TextView виджетов. Android вызовет toString() на объекты в вашем массиве, вылейте этот результат в TextView, а TextViews пойдет в ячейки сетки.

Если вы хотите, чтобы ваши ArrayAdapter быть возвращение вещей кроме TextView, вам нужно будет переопределить getView() и обрабатывать более, что сами, возможно, с использованием макета файла вашего собственного творения.

Так что вопрос в том, могу ли я сделать это так, или мне лучше сделать свой собственный CustomAdapter?

Как уже отмечалось в начале моего ответа, вы просто не будете надежно работать.

Pretending на данный момент, что наличие WebViews в GridView будет работать, самое простое решение было бы для вас, чтобы переопределить getView() в собственном подклассе ArrayAdapter, как я уже говорил ранее. Вот free excerpt from one of my books, который проходит этот процесс.

+0

Ах. Это имеет большой смысл. О веб-просмотрах внутри сетки, я знаю, что это кажется странным. Но в основном веб-просмотры будут содержать отдельные виджеты javascript. каждая из них немного отличается и не прокручивается. Подумайте об этом, как приложение со скоростным стилем с различными виджетами в сетке 3x3. – OVERTONE

 Смежные вопросы

  • Нет связанных вопросов^_^