2016-11-22 5 views
0

Я пытаюсь вставить GridView, который я создал на Java, в RelativeLayout alredy, созданный в xml. Ошибка, которую я получаю, это «java.lang.UnsupportedOperationException: addView (View) не поддерживается в AdapterView», и каждый раз, когда он попадает в функцию addView, он прерывает мое приложение. Я попытался создать LinearLayout insted of Relative и по-прежнему та же ошибка.Добавить GridView, созданный программно в RelativeLayout

Вот код:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main3" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.work.app2.Main3Activity"> 

<Button 
    android:text="Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:id="@+id/buttonDel" /> 

<Button 
    android:text="Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/button" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:id="@+id/RL"> 

</RelativeLayout> 

И Java:

RelativeLayout RelView; 
private void addButton() { 
    RelView = (RelativeLayout) findViewById(R.id.RL); 
    GridView GV = new GridView(this); 
    GV.setLayoutParams(new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT 
      )); 

    GV.setColumnWidth(100); 
    GV.setNumColumns(GridView.AUTO_FIT); 
    GV.setStretchMode(GridView.STRETCH_COLUMN_WIDTH); 

    GV.addView(RelView);//<-----Problem here 

    GridAdapter adapter = new GridAdapter(Main3Activity.this,IconsL,Icons2L,nstring); 

    RelatLayout.setAdapter(adapter); 

    RelatLayout.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
     @Override 
     public void onItemClick(AdapterView<?> parent, android.view.View view, int position, long id) { 
      showMessage("ss", "click"+position); 
     } 

    }); 
    } 
+0

Вы имеете в виду 'RelView.addView (GV)'? – nandsito

+0

Первое, что в вашем xml отсутствует тег закрытия для вашего относительного макета (id = RL). После его исправления вы добавляете представление сетки в представление rl после установки всех ваших адаптеров ... Итак, добавьте 'rl.addview (gridview)' в качестве последней строки после того, как вы установили все требования для вашего вида сетки. – eshb

ответ

0

Вы добавляете относительное расположение в виде сетки. Попробуйте сделать обратное RelView.addView(GV)

+0

yep, мне не хватало RelView.addView (GV), теперь это работает, спасибо – Robert