2016-01-14 15 views
8

tôi đã ArrayList này của các đối tượng, và tôi cần phải thiết lập nó như là bộ chuyển đổi spinner của tôi như thế này:Sử dụng danh sách mảng đối tượng như bộ chuyển đổi spinner

ArrayList<Contact> contactlist= new ArrayList<Contact>(); 
contactlist.add("Gabe"); 
contactlist.add("Mark"); 
contactlist.add("Bill"); 
contactlist.add("Steve"); 

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, contactlist); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

contactsSpinner.setAdapter(adapter); 

Đây là một ví dụ về đối tượng Contact của tôi, nó chỉ có hai biến, tên và ID

Contact contact = new Contact(); 
    contact.setName("Gabe") 
    contact.setID("14575") 

tôi cần phải thực hiện các chương trình spinner tên của số liên lạc từ ArrayList vì nó hiển thị các địa chỉ liên lạc trong bộ nhớ, và khi được chọn, tôi cần phải trả lại ID tiếp xúc, để thực hiện một thao tác khác. Tôi có thể làm như thế nào?

+0

Nó không rõ ràng với tôi những gì câu hỏi của bạn là chính xác, hoặc thậm chí có bao nhiêu câu hỏi mà bạn đang hỏi. Bạn có thể giải thích những gì mã đang làm không chính xác, hoặc chính xác những gì bạn cần nó để làm điều đó nó không phải là làm gì? – nasch

+0

https://stackoverflow.com/questions/29077135/populate-spinner-with-custom-object/45222776?noredirect=1#comment77412955_45222776 –

Trả lời

32

Xin chào những gì bạn cần làm là khá dễ dàng, với lớp Liên hệ của bạn, ghi đè lên phương thức toString() trong đó và trả về tên của liên hệ.

xem ví dụ. nó cũng có sẵn trong github

public class SpinnerTestOneActivity extends AppCompatActivity { 

    private Spinner spinner; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_spinner_test_one); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.my_custom_toolbar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     initializeUI(); 
    } 

    private void initializeUI() { 

     spinner = (Spinner) findViewById(R.id.SpinnerTestOneActivity_spinner); 

     ArrayList<Contact> contacts = new ArrayList<>(); 

     for (int i = 0; i < 10; i++) { 
      contacts.add(new Contact("Name_" + i, "Id_" + i)); 
     } 

     ArrayAdapter<Contact> adapter = 
       new ArrayAdapter<Contact>(getApplicationContext(), R.layout.simple_spinner_dropdown_item, contacts); 
     adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item); 

     spinner.setAdapter(adapter); 

    } 

    private class Contact { 
     private String contact_name; 
     private String contact_id; 

     public Contact() { 
     } 

     public Contact(String contact_name, String contact_id) { 
      this.contact_name = contact_name; 
      this.contact_id = contact_id; 
     } 

     public String getContact_name() { 
      return contact_name; 
     } 

     public void setContact_name(String contact_name) { 
      this.contact_name = contact_name; 
     } 

     public String getContact_id() { 
      return contact_id; 
     } 

     public void setContact_id(String contact_id) { 
      this.contact_id = contact_id; 
     } 

     /** 
     * Pay attention here, you have to override the toString method as the 
     * ArrayAdapter will reads the toString of the given object for the name 
     * 
     * @return contact_name 
     */ 
     @Override 
     public String toString() { 
      return contact_name; 
     } 
    } 

} 

đầu ra

contact_image

+1

Tăng bạn rất nhiều! 1 cho câu trả lời tuyệt vời. – Rafael

+0

bạn được chào đón, tôi vui vì tôi có thể giúp :) ....... kiểm tra mã trên github https://github.com/pankajnimgade/Tutorial/blob/master/app/src/main/java/ spinner/list/activities/SpinnerTestOneActivity.java –

+0

Xin chào mã trên đang hoạt động tốt. Cách lấy mục đã chọn từ trình quay tròn. –

Các vấn đề liên quan