是否可以从类的ArrayList的特定字段填充微调器?

时间:2013-11-12 10:36:56

标签: android data-binding arraylist spinner

我有这个类的arrayList:

public class Lawyer extends DbHelper{
    private int id;
    private String fullName;
    private String mobile;

    private Context context;

    public Lawyer(Context context,int id, String fullName, String mobile) {
        super(context);
        this.id = id;
        this.fullName = fullName;
        this.mobile = mobile;

        this.context = context;     
    }
}

我的arrayList充满了一些人的信息。是否有可能在阵列列表中有一个填充了所有律师的“fullName”的微调器? 目前我有这个代码用一个简单数组中的静态数据填充我的微调器:

String [] items={"Lawyer1","Lawyer2","Lawyer3","Lawyer4","Lawyer5"};
final Spinner lstLawyers;

lstLawyers=(Spinner)findViewById(R.id.lstLawyers);
lstLawyers.setAdapter( new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item,items));
lstLawyers.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        EditText txtMessage = (EditText) findViewById(R.id.txtMessage);
        txtMessage.setText(lstLawyers.getSelectedItem().toString());

    }
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
    }
});

1 个答案:

答案 0 :(得分:1)

看看SpinnerAdaper。

如果你有一个带有律师类的alTypes ArrayList(带有fullName,mobile等......) 你应该扩展SpinnerAdapter(见下面的AdapterForSpinner1)

然后将它设置为您的微调器:

AdapterForSpinner1 spinad1 = new AdapterForSpinner1(activity, alTypes);

             lstLawyers.setAdapter(spinad1);

AdapterForSpinner1

class AdapterForSpinner1 extends BaseAdapter implements SpinnerAdapter {

    /**
     * The internal data (the ArrayList with the Objects).
     */
    private final List<Lawyer> data;
    Context mContext;

    public AdapterForSpinner1(Context context, List<Lawyer> data){
        this.data = data;
        mContext=context;
    }

    /**
     * Returns the Size of the ArrayList
     */
    @Override
    public int getCount() {
        return data.size();
    }

    /**
     * Returns one Element of the ArrayList
     * at the specified position.
     */
    @Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }
    /**
     * Returns the View that is shown when a element was
     * selected.
     */
    @Override
    public View getView(int position, View recycle, ViewGroup parent) {
        TextView text;
        if (recycle != null){
            // Re-use the recycled view here!
            text = (TextView) recycle;
        } else {
            // No recycled view, inflate the "original" from the platform:
             LayoutInflater li = (LayoutInflater)  mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            text = (TextView) (li.inflate(android.R.layout.simple_dropdown_item_1line, parent, false)          );
        }
        text.setTextColor(Color.BLACK);
        text.setText(data.get(position).getFullname());
        return text;
    }


}