我通过扩展BaseAdapter
创建了自己的自定义适配器。我只是希望能够在我的value
方法中获取onItemClick
的字符串(因此我可以将其设为intent extra
)。我怎么能这样做?
我的自定义adapter
如下所示:
private class HashMapAdapter extends BaseAdapter {
private HashMap<String, String> mMap = new HashMap<String, String>();
private String[] mKeys;
private Context mContext;
private HashMapAdapter(Context context, HashMap<String, String> map) {
mContext = context;
mMap = map;
mKeys = mMap.keySet().toArray(new String[map.size()]);
}
@Override
public int getCount() {
return mMap.size();
}
@Override
public Object getItem(int position) {
return mMap.get(mKeys[position]);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// String key = mKeys[position];
RowView row;
if(convertView == null) {
row = new RowView(getBaseContext());
} else {
row = (RowView) convertView;
}
row.display(mKeys[position]);
return row;
}
}
答案 0 :(得分:0)
不知道为什么我以前无法让它工作,但这是怎么做的:
intent.putExtra("url", arg0.getAdapter().getItem(arg2).toString());
答案 1 :(得分:0)
在getView方法中,您可以使用
检索值mMap.get(mKeys[position]);
虽然我不是1000%肯定
答案 2 :(得分:0)
使用LinkedHashMap并使用
根据位置获取值ArrayList<LinkedHashMap<Integer, String>> myCalandersAvailable2
在getView中
String value = (new ArrayList<String>(myCalandersAvailable2
.get(position).values())).get(position);
它会告诉你如何做。
或使用此方法根据LinkedHashMap的位置获取值
public Object getElementAt(LinkedHashMap map, int index) {
for (Map.Entry entry : map.entrySet()) {
if (index-- == 0) {
return entry.value();
}
}
return null;
}