Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Don't know if you've ever solved this, but this works for me:</p> <pre><code>public class Start extends Activity { private static final String TAG = "PriceList"; ArrayAdapter&lt;ProductCategory&gt; category_adapter; ArrayAdapter&lt;ProductGroup&gt; group_adapter; ArrayList&lt;ProductCategory&gt; categories; ArrayList&lt;ProductGroup&gt; groups; ArrayList&lt;Price&gt; prices; Spinner group_spinner; Spinner category_spinner; ProgressDialog progressDialog; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); group_spinner = (Spinner) findViewById(R.id.group_spinner); category_spinner = (Spinner) findViewById(R.id.category_spinner); // product category spinner categories = new ArrayList&lt;ProductCategory&gt;(); category_adapter = new CustomArrayAdapter&lt;ProductCategory&gt;(categories); category_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // load category spinner from database loadCategory(); // adapter MUST be setup before this is called category_spinner.setAdapter(category_adapter); category_spinner.setOnItemSelectedListener(new OnItemSelectedListener () { ..... other stuff ...... private final Handler handler = new Handler() { @Override public void handleMessage(final Message msg) { Log.v(TAG, "worker thread done, setup adapter"); switch (msg.what) { case Constants.CATEGORIES: category_adapter.notifyDataSetChanged(); break; case Constants.GROUPS: group_adapter.notifyDataSetChanged(); break; case Constants.PRICES: startActivity(new Intent(Start.this, ShowPrices.class)); break; default: } // dismiss dialog progressDialog.dismiss(); } }; // loadCategory() essentially the same.... private void loadGroup(final String cat) { Log.v(TAG, "loadGroup"); progressDialog = new ProgressDialog(this); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage("Retrieving Product Groups..."); progressDialog.setMax(100); progressDialog.setProgress(0); progressDialog.show(); new Thread() { @Override public void run() { int count = 100; int i = 0; SQLiteDatabase db = DbUtils.getStaticDb(); Cursor c = db.rawQuery("select count(*) from productgroup where category = \'" + cat + "\';", null); c.moveToFirst(); if (!c.isAfterLast()) { count = c.getInt(0); } c.close(); progressDialog.setMax(count); groups.clear(); groups.add(new ProductGroup("-1", "--- Select ---")); StringBuilder sb = new StringBuilder("select _id,description from productgroup"); sb.append(" where category = \'"); sb.append(cat); sb.append("\' order by description;"); Log.v(TAG, sb.toString()); c = db.rawQuery(sb.toString(), null); c.moveToFirst(); while (!c.isAfterLast()) { Log.v(TAG, c.getString(0)); groups.add(new ProductGroup(c.getString(0), c.getString(1))); i++; if (i % 5 == 0) { progressDialog.setProgress(i); } c.moveToNext(); } c.close(); // tell UI thread OK handler.sendEmptyMessage(Constants.GROUPS); } }.start(); } // custom ArrayAdapter allows us to have our own ArrayList&lt;T&gt; class CustomArrayAdapter&lt;T&gt; extends ArrayAdapter&lt;T&gt; { CustomArrayAdapter(ArrayList&lt;T&gt; list) { super(Start.this, android.R.layout.simple_spinner_item, list); } } </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.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      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