Note that there are some explanatory texts on larger screens.

plurals
  1. POgetFilter() using BaseAdapter is throwing error
    primarykey
    data
    text
    <p>I know there have posts on this topic but I couldn't found what's the problem in my code. After trying 2 days I am posting here. Here is my Adapter:</p> <pre><code>public class CustomerListBaseAdapter extends BaseAdapter implements Filterable { private static ArrayList&lt;CustAccountObject&gt; CustArrayList; private LayoutInflater l_Inflater; public CustomerListBaseAdapter(Context context, ArrayList&lt;CustAccountObject&gt; results) { CustArrayList = results; l_Inflater = LayoutInflater.from(context); } public int getCount() { return CustArrayList.size(); } public Object getItem(int position) { return CustArrayList.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = l_Inflater.inflate(R.layout.customer_list_format, null); holder = new ViewHolder(); holder.txt_custName = (TextView) convertView.findViewById(R.id.customer_name); holder.txt_custEmail = (TextView) convertView.findViewById(R.id.customer_email); holder.txt_custId = (TextView) convertView.findViewById(R.id.customer_id); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.txt_custName.setText(CustArrayList.get(position).name); holder.txt_custEmail.setText(CustArrayList.get(position).email1); holder.txt_custId.setText(CustArrayList.get(position).pkid.toString()); return convertView; } static class ViewHolder { TextView txt_custName; TextView txt_custEmail; TextView txt_custId; } @Override public Filter getFilter() { Filter filter = new Filter() { @Override protected FilterResults performFiltering(CharSequence charSequence) { FilterResults results = new FilterResults(); //If there's nothing to filter on, return the original data for your list if(charSequence == null || charSequence.length() == 0) { results.values = CustArrayList; results.count = CustArrayList.size(); } else { ArrayList&lt;CustAccountObject&gt; filterResultsData = new ArrayList&lt;CustAccountObject&gt;(); String filterString = charSequence.toString().toLowerCase(); String filterableString; for(int i=0; i&lt;CustArrayList.size(); i++) { filterableString = CustArrayList.get(i).toString(); if(filterableString.toLowerCase().contains(filterString)){ filterResultsData.add(CustArrayList.get(i)); } } results.values = filterResultsData; results.count = filterResultsData.size(); } return results; } @Override protected void publishResults(CharSequence charSequence, FilterResults filterResults) { CustArrayList = (ArrayList&lt;CustAccountObject&gt;)filterResults.values; notifyDataSetChanged(); } }; return filter; } } </code></pre> <p>Here is my Activity:</p> <pre><code> inputSearch.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { // When user changed the Text CustomerListActivity.this.adapter.getFilter().filter(cs); } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } }); </code></pre> <p>I have tried a debug but after coming to this <code>inputSearch.addTextChangedListener(new TextWatcher()</code> code App is crashing. </p> <p>My logcat:</p> <pre><code>03-22 04:20:00.644: E/Trace(20950): error opening trace file: No such file or directory (2) 03-22 04:20:01.335: E/AndroidRuntime(20950): FATAL EXCEPTION: main 03-22 04:20:01.335: E/AndroidRuntime(20950): java.lang.RuntimeException: Unable to instantiate application asia.wavelet.android.application.MyApp: java.lang.NullPointerException 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.LoadedApk.makeApplication(LoadedApk.java:504) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4364) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.ActivityThread.access$1300(ActivityThread.java:141) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.os.Handler.dispatchMessage(Handler.java:99) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.os.Looper.loop(Looper.java:137) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.ActivityThread.main(ActivityThread.java:5039) 03-22 04:20:01.335: E/AndroidRuntime(20950): at java.lang.reflect.Method.invokeNative(Native Method) 03-22 04:20:01.335: E/AndroidRuntime(20950): at java.lang.reflect.Method.invoke(Method.java:511) 03-22 04:20:01.335: E/AndroidRuntime(20950): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 03-22 04:20:01.335: E/AndroidRuntime(20950): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 03-22 04:20:01.335: E/AndroidRuntime(20950): at dalvik.system.NativeStart.main(Native Method) 03-22 04:20:01.335: E/AndroidRuntime(20950): Caused by: java.lang.NullPointerException 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:379) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.LoadedApk.getClassLoader(LoadedApk.java:322) 03-22 04:20:01.335: E/AndroidRuntime(20950): at android.app.LoadedApk.makeApplication(LoadedApk.java:496) 03-22 04:20:01.335: E/AndroidRuntime(20950): ... 11 more 03-22 04:21:10.265: E/AndroidRuntime(20984): FATAL EXCEPTION: main 03-22 04:21:10.265: E/AndroidRuntime(20984): java.lang.NullPointerException 03-22 04:21:10.265: E/AndroidRuntime(20984): at asia.wavelet.android.customer.CustomerListActivity$RetreiveCustomer.onPostExecute(CustomerListActivity.java:237) 03-22 04:21:10.265: E/AndroidRuntime(20984): at asia.wavelet.android.customer.CustomerListActivity$RetreiveCustomer.onPostExecute(CustomerListActivity.java:1) 03-22 04:21:10.265: E/AndroidRuntime(20984): at android.os.AsyncTask.finish(AsyncTask.java:631) 03-22 04:21:10.265: E/AndroidRuntime(20984): at android.os.AsyncTask.access$600(AsyncTask.java:177) 03-22 04:21:10.265: E/AndroidRuntime(20984): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 03-22 04:21:10.265: E/AndroidRuntime(20984): at android.os.Handler.dispatchMessage(Handler.java:99) 03-22 04:21:10.265: E/AndroidRuntime(20984): at android.os.Looper.loop(Looper.java:137) 03-22 04:21:10.265: E/AndroidRuntime(20984): at android.app.ActivityThread.main(ActivityThread.java:5039) 03-22 04:21:10.265: E/AndroidRuntime(20984): at java.lang.reflect.Method.invokeNative(Native Method) 03-22 04:21:10.265: E/AndroidRuntime(20984): at java.lang.reflect.Method.invoke(Method.java:511) 03-22 04:21:10.265: E/AndroidRuntime(20984): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 03-22 04:21:10.265: E/AndroidRuntime(20984): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 03-22 04:21:10.265: E/AndroidRuntime(20984): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>My AsyncTask class:</p> <pre><code> class RetreiveCustomer extends AsyncTask&lt;Void,Void,String&gt; { protected void onPreExecute() { //display progress dialog. } protected String doInBackground(Void... params) { String json = null; try { boolean fromLocal = true; if(isOnline(getApplicationContext())) { try { URL url = new URL("http://192.168.0.177:8080/ws/api/customer/5"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); int response = con.getResponseCode(); if (response == HttpURLConnection.HTTP_OK) { json = readStream(con.getInputStream()); fromLocal = false; } } catch (Exception e) { e.printStackTrace(); } } if(fromLocal) { Collection custCol = new Vector(); custCol = custBean.query(null, null, null, CustAccountBean.NAME); Gson gson = new Gson(); json = gson.toJson(custCol); } } catch (Exception e) { e.printStackTrace(); } return json; } private String readStream(InputStream in) { BufferedReader reader = null; String line = null; try { reader = new BufferedReader(new InputStreamReader(in)); line = reader.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return line; } protected void onPostExecute(String result) { Collection custCol = new Vector(); Gson gson = new Gson(); Type token = new TypeToken&lt;Collection&lt;CustAccountObject&gt;&gt;() {}.getType(); custCol = gson.fromJson(result, token); // List&lt;CustAccountObject&gt; customers = new ArrayList&lt;CustAccountObject&gt;(custCol); // // lv = (ListView) findViewById(R.id.list); // inputSearch = (EditText) findViewById(R.id.customer_search); // // // Adding customers to listview // adapter = new ArrayAdapter&lt;CustAccountObject&gt;(getApplicationContext(), R.layout.list, R.id.name, customers); // lv.setAdapter(adapter); ArrayList&lt;CustAccountObject&gt; cust_details = GetSearchResults(custCol); lv = (ListView) findViewById(R.id.list); adapter = new CustomerListBaseAdapter(getApplicationContext(), cust_details); lv.setAdapter(adapter); // inputSearch.addTextChangedListener(new TextWatcher() { // // @Override // public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { // // When user changed the Text // CustomerListActivity.this.adapter.getFilter().filter(cs); // } // // @Override // public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, // int arg3) { // // TODO Auto-generated method stub // } // // @Override // public void afterTextChanged(Editable arg0) { // // TODO Auto-generated method stub // } // }); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView&lt;?&gt; l, View v, int position, long id) { CustAccountObject custObj = (CustAccountObject) adapter.getItem(position); customerEdit(custObj.pkid); } }); } public boolean isOnline(Context context) { ConnectivityManager cm = (ConnectivityManager) getSystemService(context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null &amp;&amp; netInfo.isConnectedOrConnecting()) { return true; } return false; } private ArrayList&lt;CustAccountObject&gt; GetSearchResults(Collection custCol){ ArrayList&lt;CustAccountObject&gt; results = new ArrayList&lt;CustAccountObject&gt;(); Vector vecResult = new Vector(custCol); CustAccountObject custObj = new CustAccountObject(); for(int i=0; i&lt;vecResult.size(); i++) { custObj = (CustAccountObject) vecResult.get(i); results.add(custObj); } return results; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload