如何使用对象列表而不仅仅是字符串填充微调器?

时间:2014-04-23 19:40:11

标签: android arraylist android-spinner

您好,我是Android新手。我想用一个对象列表填充一个Spinner。我已经google了如何做,但我只是找到了一个字符串数组的例子。

任何人都可以帮助我吗?

这是我的代码:

Categories上课:

public class Categories 
{
    @com.google.gson.annotations.SerializedName("id")
    private String mId;

    @com.google.gson.annotations.SerializedName("name")
    private String mName;

    public Categories()
    {}

    public Categories(String id, String name)
    {
        this.setId(id);
        this.setName(name);
    }

    @Override
    public String toString() 
    {
        return mName;
    }

//  ********    GET     *************
    public String getId()
    {
        return mId;
    }

    public String getName()
    {
        return mName;
    }

//  ********    SET     *************

    public final void setId(String id)
    {
        mId = id;
    }

    public final void setName(String name)
    {
        mName = name;
    }
}

这是我的活动代码:

public class AgregarActividadActivity extends ActionBarActivity 
{

    private MobileServiceClient mClient;
    private MobileServiceTable<Activities> mActivitiesTable;
    private MobileServiceTable<Categories> mCategoriesTable;
    private MobileServiceTable<Projects> mProjectsTable;


    private EditText mTxtTitulo;
    private EditText mTxtDescr;
    String categryId = null;
    List<Categories> catList = new ArrayList<Categories>();

    Spinner spEstado;



    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_agregar_actividad);

        try 
        {
            mClient = new MobileServiceClient(
                    "https://site.azure-mobile.net/",
                    "AppKey", 
                    this);
            mActivitiesTable = mClient.getTable(Activities.class);
            mCategoriesTable = mClient.getTable(Categories.class);
        } 
        catch (MalformedURLException e) 
        {
            createAndShowDialogExc(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error");
        }

        mTxtTitulo = (EditText) findViewById(R.id.txtTitulo);
        mTxtDescr = (EditText) findViewById(R.id.txtDescripcion);
        getCategories();

        spEstado = (Spinner)this.findViewById(R.id.spEstado);

        ArrayAdapter<Categories> Adapter = new ArrayAdapter<Categories>(this,
                android.R.layout.simple_spinner_item, catList);
        Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstado.setAdapter(Adapter);
        spEstado.setOnItemSelectedListener(
                new AdapterView.OnItemSelectedListener() {
                    public void onItemSelected(
                            AdapterView<?> parent, 
                            View view, 
                            int position, 
                            long id) {
                        Categories item = (Categories) parent.getItemAtPosition(position);
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                    }
                }
            );

        spProjects = (Spinner)this.findViewById(R.id.spProyecto);
        ArrayAdapter<Projects> proAdapter = new ArrayAdapter<Projects>(this,
                android.R.layout.simple_spinner_item, proList);
        proAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spProjects.setAdapter(proAdapter);

    }

    private void getCategories()
    {
        mCategoriesTable.execute(new TableQueryCallback<Categories>() 
        {
            public void onCompleted(List<Categories> result, int count, Exception exception, ServiceFilterResponse response) 
            {
                if (exception == null) 
                {
                    for (Categories item : result) 
                    {
                        catList.add(item);
                    }
                } 
                else 
                {
                    createAndShowDialog(exception, "Error");
                }
            }
        });
    }
}

我得到了带有对象的下拉列表,但当我选择一个项目时,当隐藏下拉列表时,它不会显示为所选项目。

任何想法都会对我有所帮助!谢谢!!

1 个答案:

答案 0 :(得分:0)

您需要为此编写CustomAdapter。它类似于为ListView编写CustomAdapter。您可以查看Custom Adapter for List View的想法