Я пытаюсь вставить 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);
}
});
}
Вы имеете в виду 'RelView.addView (GV)'? – nandsito
Первое, что в вашем xml отсутствует тег закрытия для вашего относительного макета (id = RL). После его исправления вы добавляете представление сетки в представление rl после установки всех ваших адаптеров ... Итак, добавьте 'rl.addview (gridview)' в качестве последней строки после того, как вы установили все требования для вашего вида сетки. – eshb