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

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

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

以下是填充微调器的代码

  1. private void buildDrinkDropDown() {
  2.  
  3. List<NameValuePair> apiParams = new ArrayList<NameValuePair>(1);
  4. apiParams.add(new BasicNameValuePair("call","drinkList"));
  5.  
  6. bgt = new BackGroundTask(MAP_API_URL,"GET",apiParams);
  7.  
  8. try {
  9.  
  10. JSONArray drinks = bgt.execute().get();
  11.  
  12. for (int i = 0; i < drinks.length(); i++) {
  13.  
  14. JSONObject d = drinks.getJSONObject(i);
  15.  
  16. String id = d.getString(TAG_ID_DRINK);
  17. String createdAt = d.getString(TAG_CREATED_AT);
  18. String updatedAt = d.getString(TAG_UPDATED_AT);
  19. String price = d.getString(TAG_PRICE);
  20. String name = d.getString(TAG_NAME);
  21.  
  22. drinkList.add(new Drink( createdAt,id,name,price,updatedAt ));
  23. }
  24.  
  25. drinkField = (Spinner) findViewById(R.id.countryField);
  26. DrinkAdapter dAdapter = new DrinkAdapter(this,android.R.layout.simple_spinner_item,drinkList);
  27. drinkField.setAdapter(dAdapter);
  28.  
  29. drinkField.setOnItemSelectedListener(new OnItemSelectedListener(){
  30.  
  31. @Override
  32. public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
  33. //Drink selectedDrink = drinkList.get(position);
  34. GlobalDrinkSelected = drinkList.get(position).getId().toString();
  35.  
  36. }
  37.  
  38. @Override
  39. public void onNothingSelected(AdapterView<?> parent) {}
  40.  
  41.  
  42. });
  43.  
  44. } catch (JSONException e) {
  45. e.printStackTrace();
  46. } catch (InterruptedException e) {
  47. e.printStackTrace();
  48. } catch (ExecutionException e) {
  49. e.printStackTrace();
  50. }
  51. }

以下是适配器类的代码

  1. package com.android.main;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import android.app.Activity;
  6. import android.util.Log;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.ArrayAdapter;
  11. import android.widget.TextView;
  12.  
  13. public class DrinkAdapter extends ArrayAdapter<Drink>
  14. {
  15. private Activity context;
  16. ArrayList<Drink> data = null;
  17.  
  18. public DrinkAdapter(Activity context,int resource,ArrayList<Drink> data)
  19. {
  20. super(context,resource,data);
  21. this.context = context;
  22. this.data = data;
  23. }
  24.  
  25. @Override
  26. public View getView(int position,View convertView,ViewGroup parent)
  27. { // Ordinary view in Spinner,we use android.R.layout.simple_spinner_item
  28. return super.getView(position,convertView,parent);
  29. }
  30.  
  31. @Override
  32. public View getDropDownView(int position,ViewGroup parent)
  33. { // This view starts when we click the spinner.
  34. View row = convertView;
  35. if(row == null)
  36. {
  37. LayoutInflater inflater = context.getLayoutInflater();
  38. row = inflater.inflate(R.layout.dropdown_value_id,parent,false);
  39. }
  40.  
  41. Drink item = data.get(position);
  42. String test = item.getName();
  43. Log.d("test ",test);
  44.  
  45. if(item != null)
  46. {
  47.  
  48. TextView drinkName = (TextView) row.findViewById(R.id.item_value);
  49.  
  50. if(drinkName != null){
  51. drinkName.setText(item.getName());
  52. Log.d("find me ",drinkName.toString());
  53. }
  54.  
  55. }
  56.  
  57. return row;
  58. }
  59. }

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="horizontal" >
  6.  
  7. <TextView
  8. android:id="@+id/item_value"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"/>
  11.  
  12. </LinearLayout>

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

任何帮助将被大大的配合

编辑:截图

解决方法

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

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

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

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

猜你在找的Android相关文章