2012-03-07 2 views
0

У меня есть элемент управления spinner, который я заполняю из класса, который наследуется от BaseAdapter. Я могу использовать этот класс адаптера для заполнения счетчика, но он показывает 2 столбца, и мне бы это понравилось. Например, в настоящее время он показывает:Android - Показывать только 1 значение в Spinner from Adapter

John Brown      [email protected] 
Sue Fields      [email protected] 
Mark Twain      [email protected] 

, и я хотел бы это только шоу:

John Brown 
Sue Fields 
Mark Twain 

Вот код для моего адаптера:

public class POCInfoAdapter extends BaseAdapter { 

    //Private objects. 
    private List<POCInfo> mListPOCInfo; 
    private LayoutInflater mInflater; 

    //constructor. 
    public POCInfoAdapter(Context c, List<POCInfo> list){ 
     mListPOCInfo = list; 

     //create layout inflater. 
     mInflater = LayoutInflater.from(c); 
    } 

    @Override 
    public int getCount(){ 
     return mListPOCInfo.size(); 
    } 

    @Override 
    public Object getItem(int position){ 
     return mListPOCInfo.get(position); 
    } 

    @Override 
    public long getItemId(int position){ 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     //Get view reference. 
     View view = convertView; 

     //If view is null. 
     if(view == null){ 
      //Inflate new layout. 
      view = mInflater.inflate(R.layout.poc_list, null); 

      //create holder. 
      ViewHolder holder = new ViewHolder(); 

      //Find Controls. 
      holder.txtFullName = (TextView)view.findViewById(R.id.txtFullName); 
      holder.txtEmailAddress = (TextView)view.findViewById(R.id.txtEmailAddress); 

      //Set data structure to view. 
      view.setTag(holder); 
     } 

     //Get selected POC Info. 
     POCInfo pocInfo = mListPOCInfo.get(position); 

     if(pocInfo != null){ 
      //query data structure. 
      ViewHolder holder = (ViewHolder)view.getTag(); 

      //Set data to display. 
      holder.txtFullName.setText(pocInfo.getFullName()); 
      holder.txtEmailAddress.setText(pocInfo.getEmailAddress()); 
     } 

     return view; 
    } 

    //Class to hold data structure on view with POC Information. 
    static class ViewHolder{ 
     private TextView txtFullName; 
     private TextView txtEmailAddress; 
    } 
} 

и код для заполнения счетчик:

Spinner spSpinner = (Spinner)findViewById(R.id.spPOCs); 
spSpinner.setAdapter(new POCInfoAdapter(this, DBAdapter.queryAll())); 

DBA dapter.queryAll() возвращает список типов POCInfo. Класс POCInfoAdapter также используется многими другими действиями, которые требуют адрес электронной почты, поэтому я не могу просто изменить getView(), чтобы возвращать только FullName.

Любые идеи?

+0

удалить эту строку holder.txtEmailAddress = (TextView) view.findViewById (R.id.txtEmailAddress); –

+0

Как я уже говорил во второй-последней строке OP, я не могу изменить getView, потому что этот класс используется в других действиях, где это требуется. – Robert

+0

... затем создайте копию класса и удалите его и используйте это ... или у вас есть флаг, который скроет его, и установите этот флаг соответственно – jsimpson

ответ

0

Независимо от того, сколько элементов вы хотите отобразить, включая переключатель, вы можете настроить их в своем настроенном макете. и вы можете раздувать этот макет вашего кода

view = mInflater.inflate(R.layout.poc_list, null);