2012-05-21 36 views
5

Tôi có ArrayAdapter tùy chỉnh để đại diện cho đối tượng trên điều khiển spinner, tôi có thể tải các mục của tôi danh sách và hiển thị nó để lựa chọn, nhưng khi lựa chọn thực tế xảy ra thì spinner không hiển thị gì cả.Spinner với ArrayAdapter tùy chỉnh cho đối tượng không hiển thị mục được chọn

Hoạt động mã:

public MetroData metroData; 
private Spinner spinner; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    metroData = new MetroData(); 
    spinner = (Spinner) findViewById(R.id.spinner1); 
    StopArrayAdapter dAdapter = new StopArrayAdapter(this, metroData.Stops); 

    spinner.setAdapter(dAdapter); 
} 

StopArrayAdapter:

public class StopArrayAdapter extends ArrayAdapter<MetroStop> { 

private List<MetroStop> items; 
private Activity activity; 

public StopArrayAdapter(Activity activity, List<MetroStop> items) { 
    super(activity, android.R.layout.simple_list_item_1, items); 
    this.items = items; 
    this.activity = activity; 
} 

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    TextView v = (TextView) super.getView(position, convertView, parent); 

    if (v == null) { 
     v = new TextView(activity); 
    } 
    v.setTextColor(Color.BLACK); 
    v.setText(items.get(position).getName()); 
    return v; 
} 

@Override 
public MetroStop getItem(int position) { 
    return items.get(position); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 

    if (v == null) { 
     LayoutInflater inflater = activity.getLayoutInflater(); 
     v = inflater.inflate(R.layout.view_spinner_item, null); 
    } 
    TextView lbl = (TextView) v.findViewById(R.id.text1); 
    lbl.setTextColor(Color.BLACK); 
    lbl.setText(items.get(position).getName()); 
    return convertView; 
} 
} 

Spinner xem mục mẫu:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textColor="#222"/> 

Bất kỳ ý tưởng về lý do tại sao quan điểm sản phẩm được chọn không hoạt động? Btw, tôi cũng đã thử nó với một ArrayAdapter bình thường với cùng một kết quả.

Cập nhật Dường như chế độ xem được tạo nhưng nhìn vào trình xem phân cấp, chế độ xem không được hiển thị, Đo/Bố trí/Vẽ = n/a.

+0

Kiểm tra văn bảnColor – Krish

+0

Không, textColor không có hiệu ứng nào cho chế độ xem mục đã chọn, tôi đã thử cả hai có hoặc không có. – Andres

Trả lời

4

Tôi đã phát hiện ra vấn đề là gì. Vì tôi đã tìm nạp dữ liệu cho spinner từ internet, tôi cần kích hoạt notificationDataSetChanged(), mặc dù không có nội dung của spinner được cập nhật. Dường như chế độ xem mục đã chọn không nhận được thông báo.

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