Вместо этого я взял бы ваш Hashmap и создал массив, не зная, как вы хотите, чтобы ваш Spinner работал, я бы объединил Name и Score.Затем выполните вызов адаптера следующим образом:
String[] nameScore = (xml name score data in string array)
ArrayAdapter adapter= new ArrayAdapter(this, android.R.layout.simple_spinner_item, nameScore);
s.setAdapter(adapter);
Что-нибудь более сложное, чем то, что вам придется сделать пользовательский адаптер.
Ответ :::
Вот что вы делаете.Создайте класс с именем NameData, затем установите свойства с идентификатором, именем и счетом.
public class NameData {
public int id;
public String name;
public int score;
public NameData(int i, String n, int s) {
this.id = i;
this.name = n;
this.score = s;
}
}
Затем создайте метод для подключения к вашим данным, проанализируйте его и поместите каждый элемент в этот объект NameData
public List<NameData> getNameData() {
List<NameData> list = new LinkedList<NameData>();
//get data from url and parse it to your namedata object
// /.....for loop (psuedo coding here...
list.add(new NameData(id, name, score));
// end for loop
return list;
}
, тогда вам нужно будет создать собственный адаптер List, который использует макет, который вы проектируете для строк .:
private class ItemsAdapter extends BaseAdapter {
NameData[] items;
public ItemsAdapter(Context context, int textViewResourceId, NameData[] md) {
this.items = md;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
TextView text1;
View view = convertView;
if (view == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.yourRowForListlayout, null);
}
text1 = (TextView) view.findViewById(R.id.yourRowForListlayoutTextView);
text1.setText("" + (position+1));
return view;
}
@Override
public int getCount() {
return this.items.length;
}
@SuppressWarnings("boxing")
@Override
public Object getItem(int p) {
return p;
}
@Override
public long getItemId(int p) {
return p;
}
}
, затем в своем коде создания вы можете взять этот список и добавить его непосредственно в адаптер:
List<NameData> list = getNameData();
adapter = new ItemsAdapter(this, R.layout.yourRowForListlayout, list.toArray(new NameData[list.size()]) );
setAdapter(adapter);
И так я бы сделал для настраиваемого списка.