java.lang.IllegalStateException: ArrayAdapter 要求资源ID 为TextView?

java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView?

我试图在微调器中显示两个值:1) 姓名 2) 联系电话。 它最初显示从我的 jsonArray 解析的第一个值。但是当我点击微调器时,应用程序崩溃并出现 IllegalStateException。

private void showCustomers(String json)
{
    ParseCustomer parseCustomer = new ParseCustomer(json);
    parseCustomer.parseJSON();

    CustomerList cl =new CustomerList(this,ParseCustomer.name,ParseCustomer.mobile_no);
    customerSpinner.setAdapter(cl);

    //This displays just the names
    //ArrayAdapter<String> adapter = new ArrayAdapter(this,R.layout.spinner_customer,R.id.tv_custNames,ParseCustomer.name);
    //customerSpinner.setAdapter(adapter);

}

这是我的数组适配器代码。

public class CustomerList extends ArrayAdapter<String>
{
    private String[] name;
    private String[] mobile_no;
    private Activity context;

public CustomerList(Activity context,String[] name, String[] mobile_no)
{
    super(context, R.layout.spinner_customer, name);
    this.context =context;
    this.name= name;
    this.mobile_no = mobile_no;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    LayoutInflater inflater = context.getLayoutInflater();
    View listViewCustomer = inflater.inflate(R.layout.spinner_customer, null, true);
    TextView textViewName = (TextView) listViewCustomer.findViewById(R.id.tv_custNames);
    TextView textViewContact = (TextView) listViewCustomer.findViewById(R.id.tv_custPh);

    textViewName.setText(name[position]);
    textViewContact.setText(mobile_no[position]);

    return listViewCustomer;
}
}

spinner_customer.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/tv_custNames"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/tv_custPh"
        android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

错误日志:-

11-25 17:39:58.497 13342-13342/org.bordetuts.com.goldmine E/ArrayAdapter: You must supply a resource ID for a TextView
11-25 17:39:58.498 13342-13342/org.bordetuts.com.goldmine D/AndroidRuntime: Shutting down VM
11-25 17:39:58.499 13342-13342/org.bordetuts.com.goldmine W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x416a1ba8)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime: FATAL EXCEPTION: main
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime: Process: org.bordetuts.com.goldmine, PID: 13342
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime: java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:415)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getDropDownView(AppCompatSpinner.java:624)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getView(AppCompatSpinner.java:620)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner.compatMeasureContentWidth(AppCompatSpinner.java:547)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner.access0(AppCompatSpinner.java:65)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner$DropdownPopup.computeContentWidth(AppCompatSpinner.java:738)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner$DropdownPopup.show(AppCompatSpinner.java:763)
11-25 17:39:58.508 13342-13342/org.bordetuts.com.goldmine E/AndroidRuntime:     at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:424)

像这样修改你的适配器class

    public class CustomerList extends BaseAdapter
    {
        private String[] name;
        private String[] mobile_no;
        private Activity context;
    private LayoutInflater inflater;
    public CustomerList(Activity context,String[] name, String[] mobile_no)
    {    
        this.context =context;
        this.name= name;
        this.mobile_no = mobile_no;
        this.inflater = context.getLayoutInflater();
    }

    @Override
        public int getCount() {
            return name.length;
        }

        @Override
        public Object getItem(int position) {
            return name[position];
        }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
ViewHolder holder;
if(convertView==null){
        holder = new ViewHolder();
        View convertView = inflater.inflate(R.layout.spinner_customer, null);
         holder.textViewName = (TextView) convertView.findViewById(R.id.tv_custNames);
        holder.textViewContact = (TextView) convertView.findViewById(R.id.tv_custPh);
    convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
        holder.textViewName.setText(name[position]);
        holder.textViewContact.setText(mobile_no[position]);

        return convertView;
    }
class ViewHolder{
TextView textViewName,textViewContact;
}
    }