0
我想使用另一個類的適配器。但顯然有些不妥,因爲當我鍵入搜索欄的應用崩潰的值,日誌說:使用另一個類的適配器
lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter android.widget.ArrayAdapter.getFilter()' on a null object reference
這是我的代碼,我想使用onQueryTextChange方法適配器:
public class FindSkill extends AppCompatActivity {
ArrayAdapter myAdapter;
@Override
public boolean onQueryTextChange(String query) {
Parser parser = new Parser(FindSkill.this, data, listView);
myAdapter = (ArrayAdapter) parser.listView.getAdapter();
myAdapter.getFilter().filter(query.toString());
myAdapter.notifyDataSetChanged();
return false;
}
解析器類代碼:
public class Parser extends AsyncTask <Void, Void,Integer> {
Context ctx;
ListView listView;
String data;
ArrayList<String> titles = new ArrayList<>();
public Parser(Context ctx, String data, ListView listView) {
this.ctx = ctx;
this.data=data;
this.listView = listView;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Integer doInBackground(Void... params) {
return this.parse();
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if (integer == 1) {
ArrayAdapter adapter = new ArrayAdapter(ctx, android.R.layout.simple_list_item_1, titles);
listView.setAdapter(adapter);
} else {
Toast.makeText(ctx, "Unable to Parse", Toast.LENGTH_LONG).show();
}
}
private int parse() {
try {
JSONArray ja = new JSONArray(data);
JSONObject jo = null;
titles.clear();
for (int i = 0; i < ja.length(); i++) {
jo = ja.getJSONObject(i);
String title = jo.getString("post_title");
titles.add(title);
}
return 1;
} catch (JSONException e) {
return 0;
}
}
}
我修改了代碼,以表明我已經使用這種方式。 – Jou
檢查我編輯的答案。 –
我無法使用myAdapter.getFilter()。filter(query.toString());在taskCompletionResult()方法中,因爲查詢在那裏沒有定義。並且該行還包含錯誤: 解析器解析器=新的解析器(FindSkill.this,data,listView,this); – Jou