gpt4 book ai didi

java - 带有自定义布局的 UnsupportedOperationException

转载 作者:搜寻专家 更新时间:2023-11-01 07:38:31 26 4
gpt4 key购买 nike

我正在尝试创建一个自定义 ListView 来保存自定义对象的 View ,在这种情况下,自定义对象将是 Data 类的实例

Java 代码如下:

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ListsActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Data[] array = new Data[3];
Data p1 = new Data("Person 1", 20);
Data p2 = new Data("Person 2", 33);
Data p3 = new Data("Person 3", 22);
array[0] = p1;
array[1] = p2;
array[2] = p3;
setListAdapter(new MyAdapter(this, R.layout.row, array));
}

private class MyAdapter extends ArrayAdapter<Data>{

private Data[] data;
public MyAdapter(Context context, int textViewResourceId,
Data[] objects) {
super(context, textViewResourceId, objects);
data = objects;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater)getSystemService(Context
.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
convertView = inflater.inflate(R.layout.row, parent);
}
TextView text = (TextView) findViewById(R.id.textView1);
if(data != null){
text.setText(data[position].getName());
}
return convertView;
}

}

}

class Data{
private String name;
private int age;

public Data(String name, int age) {
this.name = name;
this.setAge(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

}

和xml文件行.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="horizontal" android:weightSum="1">

<ImageView android:src="@drawable/icon" android:id="@+id/imageView1"
android:layout_height="wrap_content" android:layout_width="wrap_content" />

<TextView android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textView1" android:layout_height="wrap_content"
android:text="TextView" android:paddingTop="25dp"
android:layout_width="match_parent" />

</LinearLayout>

和 main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ListView android:layout_height="wrap_content" android:id="@android:id/list"
android:layout_width="match_parent" />

</LinearLayout>

但是它抛出一个 UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView

最佳答案

你没有给出行号和异常细节,但我猜这段代码:

if(convertView == null){
convertView = inflater.inflate(R.layout.row, parent);
}

应该变成

if(convertView == null){
// you don't have to append to the parent while inflating in Adapter
convertView = inflater.inflate(R.layout.row, null);
}

尝试一下,否则请包括完整的异常和指向您的代码的行号

关于java - 带有自定义布局的 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com