2012-03-12 3 views
4

Мне нужно иметь gridview of linearlayouts. Каждый linearLayout должен иметь изображение и релятивировать детей с большим количеством детей на нем.Можно создать GridVIew LinearLayouts?

Я ищу учебники/примеры создания gridviews LinearLayouts, но я ничего не могу найти.

Кто-нибудь имеет учебник или может дать мне несколько примеров или помочь сделать это?

спасибо

+0

Это возможно ле. Просто включите свои макеты в GridView. – zapl

ответ

8

Да, это возможно и очень просто. Когда вы используете GridView, предоставьте ему адаптер. В методе адаптера getview вы можете создать любое понравившееся вам представление и вернуть его. Например, вы можете раздуть представление из XML - и этот xml может содержать LinearLayout. Кроме того, вы можете создать линейный макет на лету в этом методе и добавить к нему другие компоненты.

Посмотрите на эту статью на Google: http://developer.android.com/resources/tutorials/views/hello-gridview.html

Update: небольшой пример

в вашем res/layout/item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingTop="0dip" 
    android:paddingBottom="0dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView android:id="@+id/TxtName" 
     android:scrollHorizontally="false" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textColor="@android:color/black" 
     android:layout_weight="0.2" 
     android:padding="2dp"/> 

    <TextView android:id="@+id/TxtPackage" 
     android:scrollHorizontally="false" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.2" 
     android:textColor="@android:color/black" 
     android:padding="2dp"/> 
</LinearLayout> 

Затем в адаптере:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    //get the item corresponding to your position 

    LinearLayout row = (LinearLayout) (convertView == null 
       ? LayoutInflater.from(context).inflate(R.layout.item, parent, false) 
       : convertView); 
    ((TextView)row.findViewById(R.id.TxtName)).setText("first text"); 
    ((TextView)row.findViewById(R.id.TxtPackage)).setText("second text"); 
    return row; 
} 
+0

этот учебник расскажет вам, как это сделать с изображениями, но не с помощью linearlayouts. Пожалуйста, можете ли вы дать мне небольшой пример этого с помощью linearlayouts и java-кода? – NullPointerException

+0

@ AndroidUser99 Вы бы пошли точно так же, за исключением того, что метод getView' вашего адаптера вернет LinearLayout. Смотрите мои правки. –

+0

как я могу это сделать, если я хочу создать LinearLayout без XML? Я научился делать это без XML-файлов. Пожалуйста, что я должен изменить в вашем коде? – NullPointerException