【发布时间】:2016-07-09 12:49:33
【问题描述】:
我做了一个应用程序,它是一种翻译单词的字典 该片段包含两个列表视图和一个类似于搜索框的 editText 我想进行搜索,但总是显示 NullPointer Exception
列表视图代码:
public void InitEng(){
English = new String[]
{
"word1", "word2", "word3", "word4", "word5",
};
English_list = new ArrayList<>(Arrays.asList(English));
lv.setTextFilterEnabled(true);
lv.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.list_item, R.id.engword, English_list));
}
public void InitGer(){
German = new String[]
{
"word1", "word2", "word3", "word4", "word5",
};
German_list = new ArrayList<>(Arrays.asList(German));
lvn.setTextFilterEnabled(true);
lvn.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.list_item, R.id.gerword, German_list));
}
现在是 OnTextChanged(搜索应该发生的地方)
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
/** When user changed the Text */
cs = inputSearch.getText().toString();
if(SelectEng.isChecked()){
try{
if("".equals(cs.toString())){
InitEng();
InitGer();
}
else{
for(String Items: English){
if(Items.contains(cs)){
English_list.remove(Items != cs);
lvn.setVisibility(View.INVISIBLE);
Toast.makeText(getActivity(),
"found-en",
Toast.LENGTH_LONG).show();
}
}
adapterE.notifyDataSetChanged();
adapterN.notifyDataSetChanged();
}
}
catch (Exception e){
Toast.makeText(getActivity(), "Error : "+e,
Toast.LENGTH_LONG).show();
}
}
else if(SelectGer.isChecked()){
try{
if("".equals(cs.toString())){
InitEng();
InitGer();
lv.setVisibility(View.VISIBLE);
lvn.setVisibility(View.VISIBLE);
}
else{
for(String Items: German){
if(Items.contains(cs)){
German_list.remove(Items != cs);
lv.setVisibility(View.INVISIBLE);
Toast.makeText(getActivity(),
"found-de",
Toast.LENGTH_LONG).show();
}
}
adapterN.notifyDataSetChanged();
adapterE.notifyDataSetChanged();
}
}
catch (Exception e){
Toast.makeText(getActivity(),
"Error : "+e,
Toast.LENGTH_LONG).show();
}
}
}
最终结果应该是: 根据用户输入过滤列表 过滤器应适用于两个列表并显示彼此面对的单词 我有两个列表视图,所以我使用了 2 个适配器 主要问题:NullPointerException 不要忘记我正在处理片段
【问题讨论】:
-
Nullpointer 到底发生在哪里?在哪个物体上???
-
在“Try()...catch()”部分
-
我只记得日志说 NullPointer 异常发生在“PerformSearchEng()”函数中
-
你不需要记住那么难......再次运行代码并将logcat输出复制到这里......:)
-
我做了一些重大改变,请花时间评估我的工作,我还是新手处理列表和适配器
标签: java android listview search nullpointerexception