为ArrayAdapter中的每个字符串赋值

时间:2010-10-14 17:26:06

标签: android android-widget

我想为一个微调器创建一个ArrayAdapter。因此每个元素包含一个字符串(将显示在微调器/列表中)和一个值(例如ID)。如何在不实现新的Adapter类的情况下轻松地在每个字符串旁边存储第二个值?

此致 xZise

2 个答案:

答案 0 :(得分:6)

您可以创建一个包含两个字段的类:一个用于文本,另一个用于ID。并实现toString方法作为返回文本字段的值。这是一个例子:

package org.me.adaptertest;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends ListActivity {
    public static class Element {
        private String mText;
        private long mId;

        public Element(String text, long id) {
            mText = text;
            mId = id;
        }

        public long getId() {
            return mId;
        }

        public void setId(long id) {
            mId = id;
        }

        public String getmText() {
            return mText;
        }

        public void setmText(String mText) {
            this.mText = mText;
        }

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

    private List<Element> mItems;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mItems = new ArrayList<MainActivity.Element>();
        mItems.add(new Element("Element 1", 1));
        mItems.add(new Element("Element 2", 2));
        mItems.add(new Element("Element 3", 3));
        setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,
                android.R.id.text1, mItems));
        getListView().setOnItemClickListener(new ListView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this,
                        "ID is " + mItems.get(position).getId(),
                        Toast.LENGTH_SHORT).show();
            }
        });
    }
}

答案 1 :(得分:0)

您可以使用哈希映射将ID映射到每个字符串。