Ich möchte einen benutzerdefinierten Adapter schreiben, um eine Listview mit 3 Textansichten pro Zeile zu füllen. Ich habe ziemlich viel Beispielcode dafür gefunden, aber dasjenige, das am besten zu sein schien, war: http://www.anddev.org/custom_widget_adapters-t1796.htmlLayoutFlater kann nicht im benutzerdefinierten Adapter verwendet werden
Nach ein paar kleineren Verbesserungen, um einige Compilerprobleme mit dem neuesten Android SDK zu beheben, habe ich es laufen lassen, nur die Ausnahme zu erhalten:
ERROR/Android Runtime (281): java.lang.UnsupportedOperationException: addView (Ansicht, LayoutParams) nicht in AdapterView unterstützt
Also habe ich eine Menge Forschung und fand viele mögliche Gründe und Korrekturen dafür. Nichts davon hat etwas verändert. Mein Adapter Code ist zur Zeit:
public class WeatherAdapter extends BaseAdapter {
private Context context;
private List<Weather> weatherList;
public WeatherAdapter(Context context, int rowResID,
List<Weather> weatherList) {
this.context = context;
this.weatherList = weatherList;
}
public int getCount() {
return weatherList.size();
}
public Object getItem(int position) {
return weatherList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Weather weather = weatherList.get(position);
//LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.weather_row, null, true);
TextView cityControl = (TextView)v.findViewById(R.id.city);
TextView temperatureControl = (TextView)v.findViewById(R.id.temperature);
ImageView skyControl = (ImageView)v.findViewById(R.id.sky);
return v;
}
}
So habe ich versucht, den Kommentar gesetzt Weg, um die Aufblaseinrichtung zu bekommen, und die zur Zeit unkommentiert aus. Ich habe versucht, "Elternteil" zu übergeben, sowie Null, und "wahr", "falsch" zu übergeben und vollständig den letzten Parameter wegzulassen. Keiner von ihnen hat funktioniert, und alle Beispiele, die ich bisher gefunden habe, stammen aus dem Jahr 2008, und ich habe das Gefühl, dass sie ein bisschen veraltet sind.
Wenn jemand damit helfen könnte, würde ich gerne das Problem lösen.
Wenn Sie ein 'AdapterView' verwenden, möchten Sie, dass Ihre Ansichten unabhängig vom übergeordneten Objekt sind,' getView() 'kümmert sich darum, dass es an das übergeordnete Objekt angehängt wird. –
@AustynMahoney Ich würde nicht sagen, 'getView()' kümmert sich darum, da ** du ** derjenige ist, der es schreibt, würde ich lieber sagen ** was auch immer 'getView()' ** heißt (mit anderen Worten, das Framework) sorgt dafür, dass die von ** 'getView()' zurückgegebene View ** angehängt wird. – Joffrey