2010-10-14 60 views
3

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

真诚 xZise

回答

5

您可以创建一个类有两个领域:一个是文本,另一个用于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(); 
      } 
     }); 
    } 
} 
+0

啊我没注意到,微调并不需要一个ArrayAdapter 。谢谢 ;) – xZise 2010-10-14 19:02:46

0

你可以使用一个HashMap来的ID映射到每个字符串。

+1

但是哈希映射不实现SpinnerAdapter。所以纺纱工不会接受它。真诚xZise – xZise 2010-10-14 19:04:29