Android微调器显示对象引用而不是字符串

前端之家收集整理的这篇文章主要介绍了Android微调器显示对象引用而不是字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧,我有一个问题我的微调.它正在填充从webservice中提取的数据.问题在于,当微调器未被单击时,而不是在微调器中显示第一个项目的字符串,而是显示对象引用.

我已经看过相关的问题,但是仍然看不到什么缺失,它是否像一个简单的缺少一个toString参考?

以下是填充微调器的代码

private void buildDrinkDropDown() {

        List<NameValuePair> apiParams = new ArrayList<NameValuePair>(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();
        }
    }

以下是适配器类的代码

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<Drink>
{
    private Activity context;
    ArrayList<Drink> data = null;

    public DrinkAdapter(Activity context,int resource,ArrayList<Drink> 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,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;
    }
}

以下是适配器中使用的dropdown_value_id布局的xml

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

    <TextView
        android:id="@+id/item_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

如果需要任何更多的信息只是喊.

任何帮助将被大大的配合

编辑:截图

解决方法

我的想法是:getView()方法用于表示行.您可以将getDropDownView方法的类似代码实现到getView()方法中.

内容从getDropDownView方法复制到getView()方法

我没有尝试过这个,但是我在ListView中做了类似的操作,我在getView()方法中做了类似的编码.

我也会尝试在本地复制一下,如果我找到任何东西.

猜你在找的Android相关文章