自定義ArrayAdapter AutoCompleteTextView不觸發 我想與一個ArrayList的對象使用自定義列表適配器使用AutoCompleteTextView,我無法獲得自動完成列表顯示。這裏是我的代碼: activity_main.xml中自定義ArrayAdapter AutoCompleteTextView不觸發
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="rick.customarrayadpter.MainActivity">
<AutoCompleteTextView
android:id="@+id/customerACTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="search" />
</android.support.constraint.ConstraintLayout>
MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.AutoCompleteTextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ArrayList<Customer> customerList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customerList = new ArrayList<Customer>();
customerList.add(new Customer(111, "Pete"));
customerList.add(new Customer(222, "Bob"));
customerList.add(new Customer(333, "Paul"));
customerList.add(new Customer(444, "Tom"));
customerList.add(new Customer(555, "Jane"));
customerList.add(new Customer(666, "Susan"));
CustomerListAdapter customerListAdapter = new CustomerListAdapter(this, R.layout.support_simple_spinner_dropdown_item, R.id.customerACTV, customerList);
AutoCompleteTextView customerACTV = (AutoCompleteTextView)findViewById(R.id.customerACTV);
customerACTV.setThreshold(1);
customerACTV.setAdapter(customerListAdapter);
}
}
CustomerListAdapter.java
public class CustomerListAdapter extends ArrayAdapter<Customer> {
ArrayList<Customer> customerList = new ArrayList<>();
public CustomerListAdapter(Context context, int resource,int textViewResourceId, ArrayList<Customer> objects) {
super(context, resource, textViewResourceId, objects);
customerList = objects;
}
@Override
public int getCount() {
return super.getCount();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.list_items, null);
AutoCompleteTextView textView = (AutoCompleteTextView) v.findViewById(R.id.customerACTV);
textView.setText(customerList.get(position).getName());
return v;
}
}
list_items.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Demo"
android:textColor="#000" />
</android.support.constraint.ConstraintLayout>
Customer.java
public class Customer {
String name;
int id;
public Customer(int ID, String Name){
this.id = ID;
this.name = Name;
}
public String getName(){return this.name;}
public int getId(){return this.id;}
}
有一個在代碼中沒有錯誤,但它並不顯示自動完成選擇,當我進入了customerACTV字母。 CustomerListAdapter構造函數正在被調用,並且Customer對象的ArrayList正在通過,但CustomerListAdapter的getView沒有被調用。
感謝
我已經看到了一些其他的帖子與此相同的問題,但沒有答案。 – rstambach