每个字符串我想创建一个ArrayAdapter的一个微调。因此,每个元素包含一个字符串(将显示在微调器/列表中)和一个值(例如ID)。如何在不实现新的Adapter类的情况下轻松地在每个字符串旁边存储第二个值?值分配给在一个ArrayAdapter
真诚 xZise
每个字符串我想创建一个ArrayAdapter的一个微调。因此,每个元素包含一个字符串(将显示在微调器/列表中)和一个值(例如ID)。如何在不实现新的Adapter类的情况下轻松地在每个字符串旁边存储第二个值?值分配给在一个ArrayAdapter
真诚 xZise
您可以创建一个类有两个领域:一个是文本,另一个用于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();
}
});
}
}
你可以使用一个HashMap来的ID映射到每个字符串。
但是哈希映射不实现SpinnerAdapter。所以纺纱工不会接受它。真诚xZise – xZise 2010-10-14 19:04:29
啊我没注意到,微调并不需要一个ArrayAdapter。谢谢 ;) –
xZise
2010-10-14 19:02:46