web-dev-qa-db-ja.com

Androidスピナーにオブジェクトのリストを入力する

後でユーザーIDを操作するために、スピナーにユーザーオブジェクトを入力していますが、ユーザーリストの表示には、推測するオブジェクトのアドレスが表示されます。

だから私の質問は、ユーザー名の場合、オブジェクトの1つの属性だけを表示し、それでもスピナーにオブジェクト全体を入力する方法です

これが私のコードです:

User user1 = new User("user1",24);
User user2 = new User("user2",26);

// Creating adapter for spinner
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);

ArrayAdapter<User> dataAdapter = new ArrayAdapter<User>(this, 
    Android.R.layout.simple_spinner_item, users);

// Drop down layout style - list view
dataAdapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
// dataAdapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);

Spinner _EmpSpinner =  null;
_EmpSpinner = (Spinner) findViewById(R.id.EmployeesSpinner); 

// attaching data adapter to spinner
_EmpSpinner.setAdapter(dataAdapter);

そしてこれはそれが表示するものです:

15
Joy

UserクラスのtoString()メソッドをオーバーライドしてみてください。

@Override
public String toString() {
    return this.name;
}
38
Szymon

メソッドpublicView getDropDownView(int position, View view, ViewGroup parent);を確認してください

オブジェクトのtoString()メソッドをオーバーライドする必要はありません。

@Override
public View getDropDownView(int position, View view, ViewGroup parent) {
    view = inflter.inflate(R.layout.obino_spinner_style, null);
    TextView goalNameTV= (TextView)view.findViewById(R.id.ObiNoID_Spinner_Text);
    goalNameTV.setText(goalItemList.get(position).getGoalType());
    return view;
}
0