Я сохранил список в activity_main_one
, и список заполняется массивом. Теперь я сохранил searchview в activity_main_page
, чтобы найти этот список. Но вместо этого я получаю сообщение об ошибке:Ссылка на нулевой объект при вызове виртуального метода при сопоставлении списка, который находится в другом действии
Attempt to invoke virtual method 'void com.example.abc.hotelomania.MainActivity1.initList()' on a null object reference
Код activity_main_one
находится в MainActivity1.class
MainActivity1.class
public class MainActivity1 extends ActionBarActivity {
String[] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_one);
initList();
items=new String[]{"Canada","China","Japan","USA"};
listItems=new ArrayList<>(Arrays.asList(items));
}
public void initList(){
adapter=new ArrayAdapter<String>(this,
R.layout.list_item, R.id.txtitem, listItems);
listView.setAdapter(adapter);
}
}
MainPage.class
public class MainPage extends Activity {
MainActivity1 mn;
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_page);
items=new String[]{"Canada","China","Japan","USA"};
listItems=new ArrayList<>(Arrays.asList(items));
listView=(ListView)findViewById(R.id.listview);
editText=(EditText)findViewById(R.id.txtsearch);
mn.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("")){
// reset listview
mn.initList();
}
else {
// perform search
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public void searchItem(String textToSearch){
for(String item:items){
if(!item.contains(textToSearch)){
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
Вы удаляете элементы во время поиска в своем DataList. –
Нет ли номера строки в сообщении об ошибке? –
MainPage.java строка 41, так что эта часть 'editText (EditText) findViewById (R.id.txtsearch); mn.initList(); ' – nikiii