На главной активности
package com.example.arseny.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
String[] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView)findViewById(R.id.listView);
editText=(EditText)findViewById(R.id.txtsearch);
initList();
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) {
if(s.toString().equals("")){
initList();
} else {
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public void searchItem(String textToSearch){
for(String item:items){
String textToSearch1 = textToSearch.toLowerCase();
if(!item.toLowerCase().contains(textToSearch1)){
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
public void initList() {
String[] items = getResources().getStringArray(R.array.psnames);
listItems = new ArrayList<>(Arrays.asList(items));
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.txtitem, listItems);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String itemValue = (String) listView.getItemAtPosition(position);
Intent intent = new Intent();
intent.setClass(MainActivity.this, Activity_Two.class);
intent.putExtra("names", itemValue);
startActivity(intent);
}
});
}
}
Создал поиск по строкам сначала из массива, а потом вот этой строчкой
String[] items = getResources().getStringArray(R.array.psnames);
решил добавлять строки из res/values/strings.xml. При этом строки от туда берутся, высвечиваются на главном экране, но вот если нажимаю на editview и начинаю вводить слово приложение вылетает. Кстати Android Studio выдает такую ошибку
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.arseny.myapplication, PID: 12543
java.lang.NullPointerException: Attempt to get length of null array at com.example.arseny.myapplication.MainActivity.searchItem(MainActivity.java:58)
at com.example.arseny.myapplication.MainActivity$1.onTextChanged(MainActivity.java:45)
at android.widget.TextView.sendOnTextChanged(TextView.java:7679)
at android.widget.TextView.handleTextChanged(TextView.java:7739)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:9472)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:964)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:515)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:454)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:33)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:685)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:197)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:184)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:286)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5305)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Помогите мне пожалуйста в этом разобраться!