Доброе утро всем. Для того, чтобы иметь автозаполнение EditText, который может найти последовательность символов между скобками или скобками Я после этого AutoCompleteTextView not completing words inside parentheses но CustomArrayAdapter я создал внесшие NoClassDefFoundError:NoClassDefFoundError на пользовательских ArrayAdapter
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.paullemesnager.flashbac, PID: 4665
java.lang.NoClassDefFoundError: com.paullemesnager.flashbac.CustomArrayAdapter
at com.paullemesnager.flashbac.SelectAssocActivity.onCreate(SelectAssocActivity.java:64)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Я не могу понять, почему я получаю эту ошибку и как его решить, может ли кто-нибудь мне помочь?
EDIT: код CustomArrayAdapter такой же, как here, но я изменил один класс:
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
FilterResults results = new FilterResults();
if (mOriginalValues == null) {
synchronized (mLock) {
mOriginalValues = new ArrayList<T>(mObjects);
}
}
if (prefix == null || prefix.length() == 0) {
ArrayList<T> list;
synchronized (mLock) {
list = new ArrayList<T>(mOriginalValues);
}
results.values = list;
results.count = list.size();
} else {
String prefixString = prefix.toString().toLowerCase();
ArrayList<T> values;
synchronized (mLock) {
values = new ArrayList<T>(mOriginalValues);
}
final int count = values.size();
final ArrayList<T> newValues = new ArrayList<T>();
for (int i = 0; i < count; i++) {
final T value = values.get(i);
final String valueText = value.toString().toLowerCase();
// First match against the whole, non-splitted value
if (valueText.startsWith(prefixString)) {
newValues.add(value);
} else {
final String[] words = valueText.split(" ");
final int wordCount = words.length;
// Start at index 0, in case valueText starts with space(s)
for (int k = 0; k < wordCount; k++) {
if (words[k].startsWith(prefixString)) {
newValues.add(value);
break;
}
}
}
}
results.values = newValues;
results.count = newValues.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
//noinspection unchecked
mObjects = (List<T>) results.values;
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
EDIT 2: В соответствии с просьбой здесь, как я создаю объект CustomArrayAdapter:
public class SelectAssocActivity extends AppCompatActivity {
private CustomArrayAdapter<String> adapterA;
.
.
.
lv = (ListView) findViewById(R.id.lvAssoc);
textView = (AutoCompleteTextView) findViewById(R.id.editTextAssoc);
adapterA = new CustomArrayAdapter<>(this, android.R.layout.simple_list_item_1, associations);
lv.setAdapter(adapterA);
CustomArrayAdapter .java:
Путь к двум файлам:
app\src\main\java\com\paullemesnager\flashbac\CustomArrayAdapter.java
app\src\main\java\com\paullemesnager\flashbac\SelectAssocActivity.java
введите код – Vyacheslav