私はオートコンプリート入力の提案ボックスを開発する必要があるプロジェクトに取り組んでいます。問題は、各カテゴリがハイライトされ、 。 私は、この目的のためにカスタムArrayAdapterを実施したが、ここでのカテゴリはアンクリッカブル ようにする方法を見つけ出すcould'tてきたが、私のカスタムアレイアダプタのコードは、ビュータイプTYPE_CATEGORY
を無効にするisEnabled()
メソッドをオーバーライドして、あなたのCustomAutoCompleteAdapter
でどのようにAutoCompleteTextView提案のいくつかの項目をアンドロイドで選択不可にする
public class CustomAutoCompleteAdapter extends ArrayAdapter<String> {
private static final int TYPE_ITEM = 0;
private static final int TYPE_CATEGORY = 1;
private TreeSet<Integer> sectionHeader = new TreeSet<Integer>();
private LayoutInflater mInflater;
public CustomAutoCompleteAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<String> objects) {
super(context, resource, objects);
mInflater = LayoutInflater.from(context);
}
public int getItemViewType(int position) {
return sectionHeader.contains(position) ? TYPE_CATEGORY : TYPE_ITEM;
}
public void addHeader(String item) {
super.add(item);
sectionHeader.add(this.getCount() - 1);
}
@Override
public int getViewTypeCount() {
return 2;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null){
int type = getItemViewType(position);
holder = new ViewHolder();
if(type == TYPE_ITEM){
convertView = mInflater.inflate(R.layout.item_layout,null);
holder.textView = (TextView) convertView.findViewById(R.id.text);
}
else{
convertView = mInflater.inflate(R.layout.category_layout,null);
holder.textView = (TextView) convertView.findViewById(R.id.category);
convertView.setClickable(false);
}
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(this.getItem(position));
return convertView;
}
private static class ViewHolder {
public TextView textView;
}
}
参照 'ListAdapter#isEnabled' – pskink