Android-Spinner, der eine Objektreferenz anstelle einer Zeichenfolge anzeigtAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Android-Spinner, der eine Objektreferenz anstelle einer Zeichenfolge anzeigt

Post by Guest »

Okay, ich habe ein Problem mit meinem Spinner. Es wird mit Daten gefüllt, die von einem Webservice abgerufen werden. Das Problem, das ich habe, ist, dass, wenn nicht auf den Spinner geklickt wird, anstatt die Zeichenfolge für das erste Element im Spinner anzuzeigen, stattdessen eine Objektreferenz dafür angezeigt wird.

Das habe ich Ich habe mir die verwandte Frage angesehen, konnte aber immer noch nicht sehen, was mir fehlt. Ist das so einfach wie das Fehlen einer toString-Referenz?

Hier ist der Code zum Füllen des Spinners

Code: Select all

private void buildDrinkDropDown() {

List apiParams = new ArrayList(1);
apiParams.add(new BasicNameValuePair("call", "drinkList"));

bgt = new BackGroundTask(MAP_API_URL, "GET", apiParams);

try {

JSONArray drinks = bgt.execute().get();

for (int i = 0; i < drinks.length(); i++) {

JSONObject d = drinks.getJSONObject(i);

String id = d.getString(TAG_ID_DRINK);
String createdAt = d.getString(TAG_CREATED_AT);
String updatedAt = d.getString(TAG_UPDATED_AT);
String price = d.getString(TAG_PRICE);
String name = d.getString(TAG_NAME);

drinkList.add(new Drink( createdAt ,id, name, price,updatedAt ));
}

drinkField = (Spinner) findViewById(R.id.countryField);
DrinkAdapter dAdapter = new DrinkAdapter(this, android.R.layout.simple_spinner_item, drinkList);
drinkField.setAdapter(dAdapter);

drinkField.setOnItemSelectedListener(new OnItemSelectedListener(){

@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
//Drink selectedDrink = drinkList.get(position);
GlobalDrinkSelected = drinkList.get(position).getId().toString();

}

@Override
public void onNothingSelected(AdapterView parent) {}

});

} catch (JSONException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
Hier ist der Code für die Adapterklasse

Code: Select all

package com.android.main;

import java.util.ArrayList;

import android.app.Activity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class DrinkAdapter extends ArrayAdapter
{
private Activity context;
ArrayList data = null;

public DrinkAdapter(Activity context, int resource, ArrayList data)
{
super(context, resource, data);
this.context = context;
this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{   // Ordinary view in Spinner, we use android.R.layout.simple_spinner_item
return super.getView(position, convertView, parent);
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{   // This view starts when we click the spinner.
View row = convertView;
if(row == null)
{
LayoutInflater inflater = context.getLayoutInflater();
row = inflater.inflate(R.layout.dropdown_value_id, parent, false);
}

Drink item = data.get(position);
String test = item.getName();
Log.d("test ", test);

if(item != null)
{

TextView drinkName = (TextView) row.findViewById(R.id.item_value);

if(drinkName != null){
drinkName.setText(item.getName());
Log.d("find me ", drinkName.toString());
}

}

return row;
}
}
Hier ist die XML-Datei für das dropdown_value_id-Layout, das im Adapter verwendet wird

Code: Select all






Wenn weitere Informationen benötigt werden, rufen Sie uns einfach an.

Jede Hilfe wäre sehr dankbar
Bearbeiten: Screenshot

Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post