Не могу присвоить строковый массив своему листу, размер функции маленький а мне нужно очень много места! поэтому хранить строки в этой функции нельзя
Это все мои три класса, это приложение поиска, где мне не хватает кода, я даже не знаю что здесь можно применить. Помогите кому не трудно. Чем можно заменить add() в методе createExampleList(), который в MainActivity, потому что в функции хранить несколько сотен тысяч строк невозможно хотел бы взять из R.array... но не выходит, это очень нужно. Я много чего перепробовал не помогает, буду рад любой информации. Кстати если скопировать весь код и поместить в android studio то он запустится без проблем.
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private String af = "";
public static String[] te;
public static String[] it;
private ArrayList<String> q;
private ArrayList<String> w;
public static ArrayList<ExampleItem> mExampleList;
private RecyclerView mRecyclerView;
private ExampleAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
te = getResources().getStringArray(R.array.das);
it = getResources().getStringArray(R.array.ssd);
createExampleList();
initlist();
EditText editText = findViewById(R.id.edittext);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
filter(s.toString());
}
});
}
private void filter(String text) {
ArrayList<ExampleItem> filteredList = new ArrayList<>();
for (ExampleItem item : mExampleList) {
if (item.getText1().toLowerCase().contains(text.toLowerCase())) {
filteredList.add(item);
}
}
mAdapter.filterList(filteredList);
}
private void createExampleList() {
mExampleList = new ArrayList<>();
mExampleList.add(new ExampleItem("Элемент поиска","Элемент поиска"));
mExampleList.add(new ExampleItem("Элемент поиска 2","Элемент поиска 2"));
}
private void initlist() {
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new ExampleAdapter(mExampleList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
}
}
class ExampleItem {
public static String mText1;
public static String mText2;
public ExampleItem(String text2, String text1) {
mText1 = text1;
mText2 = text2;
}
public String getText1() {
return mText1;
}
public String getText2() {
return mText2;
}
}
public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
private ArrayList<ExampleItem> mExampleList;
public static class ExampleViewHolder extends RecyclerView.ViewHolder {
public TextView mT;
public TextView mT2;
public ExampleViewHolder(View itemView) {
super(itemView);
mT = itemView.findViewById(R.id.textik2);
mT2 = itemView.findViewById(R.id.textik1);
}
}
public ExampleAdapter(ArrayList<ExampleItem> exampleList) {
mExampleList = exampleList;
}
@Override
public ExampleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item,
parent, false);
ExampleViewHolder aeh = new ExampleViewHolder(view);
return aeh;
}
@Override
public void onBindViewHolder(ExampleViewHolder holder, int position) {
ExampleItem cu = mExampleList.get(position);
holder.mT.setText(cu.getText1());
holder.mT2.setText(cu.getText2());
}
@Override
public int getItemCount() {
return mExampleList.size();
}
public void filterList(ArrayList<ExampleItem> filteredList) {
mExampleList = filteredList;
notifyDataSetChanged();
}
}
Это activity_main.XMl
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_light"
android:padding="4dp"
android:scrollbars="vertical" />
</LinearLayout>
Это example_item.xml (да пришлось спрятать один текст что бы он был как теги для поиска, а второй для показа)
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
app:cardBackgroundColor="#FFFFFF"
app:cardCornerRadius="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp">
<TextView
android:id="@+id/textik1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textik2"
android:layout_marginStart="6dp"
android:layout_marginBottom="4dp"
android:text="Line 1"
android:textColor="#060606"
android:textSize="15sp" />
<TextView
android:id="@+id/textik2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Line 2"
android:textColor="@android:color/transparent"
android:textSize="1sp" />
</RelativeLayout>
</androidx.cardview.widget.CardView>