我在activity_main_one
中保留了一个listview,并且该列表由数组填充。现在我已经在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