У меня есть два адаптера, которые адаптируются к виду переработчика в зависимости от различных условий. Я хочу объединить их.
Проблема в том, что я сначала создал в том же файле, что и действие, в котором он используется, а другой - в новом файле.
Примите это следующим образом: DefaultAdapter находится в файле, где он используется. AutoCompleteAdapter также используется в том же файле, но объявлен в другом файле.
Я хочу избавиться от адаптера по умолчанию и получить его функции в AutoCompleteAdapter.
Есть некоторые проблемы с ним: Iбольше не могу использовать переменные ParentFiles.
Ниже приведен адаптер, от которого я хочу избавиться.
public class DefaultAdapter extends RecyclerView.Adapter<DefaultAdapter.ViewHolder> {
private Context context;
private AdapterView.OnItemClickListener onItemClickListener;
List<String> searchList;
@NonNull @Override
public DefaultAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = (View) LayoutInflater.from(parent.getContext())
.inflate(android.R.layout.simple_list_item_1, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.txt.setText(
Html.fromHtml(getItem(position)).toString());///need to get rid of this error
}
@Override public int getItemCount() {
return searchList.size();
}
@NonNull public String getItem(int position) {
return searchList.get(position);
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView txt;
public ViewHolder(@NonNull View itemView) {
super(itemView);
txt = itemView.findViewById(android.R.id.text1);
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
String title = txt.getText().toString();
searchPresenter.saveSearch(title);
}
});
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override public boolean onLongClick(View v) {
String searched = txt.getText().toString();
deleteSpecificSearchDialog(searched);
return true;
}
});
}
}
}
Обратите внимание на SearchPresenter. Это переменная в родительском файле, которая вызывает серьезные проблемы. Адаптер автозаполнения не должен использовать его, но по умолчанию должен.
Это адаптер, который я хочу объединить в
public class AutoCompleteAdapter extends RecyclerView.Adapter<AutoCompleteAdapter.ViewHolder>
implements Filterable {
@Inject JNIKiwix currentJNIReader;
@Inject SharedPreferenceUtil sharedPreferenceUtil;
@Inject ZimReaderContainer zimReaderContainer;
private List<String> data;
private KiwixFilter kiwifilter;
private Context context;
public AutoCompleteAdapter(Context context) {
this.context = context;
data = new ArrayList<>();
kiwifilter = new KiwixFilter();
setupDagger();
}
private void setupDagger() {
CoreApp.getCoreComponent().inject(this);
}
@NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = (View) LayoutInflater.from(parent.getContext())
.inflate(android.R.layout.simple_list_item_1, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.title.setText(Html.fromHtml(getItem(position)).toString());
}
@Override
public String getItem(int index) {
String a = data.get(index);
if (a.endsWith(".html")) {
String trim = a.substring(2);
trim = trim.substring(0, trim.length() - 5);
return trim.replace("_", " ");
} else {
return a;
}
}
@Override public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView title;
public ViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(android.R.id.text1);
}
}
}
...
Обратите внимание на сходство между ними, они почтианалогично, autocompleteadapter похож на расширенный набор defaultadapter.
Я просто хочу избавиться от адаптера по умолчанию.
Примечание: я отрубил некоторые другие вещи из autocompeleteadapter, я думаю, что они не требуютсядля проблемы. Нуб тут ... Спасибо