Note that there are some explanatory texts on larger screens.

plurals
  1. POSeekBar in a ListActivity using an ArrayAdapter
    primarykey
    data
    text
    <p>I'm not tied to using an ArrayAdapter but, what I want is a list where each item contains an ImageView, a TextView, and a SeekBar to where I can update the images/texts as well as receive callbacks from each slider (obviously, I need to be able to add and delete rows dynamically).</p> <p>I've no trouble creating a list that contains these items that is static -> i.e. defined in an xml layout for each row of my list. However, with this, I'm unable to "overwrite the 'onStartTrackingTouch()', 'onProgressChanged()', etc. callback methods". I also can create a list that "contains only seekbars" and I can get the callbacks. The problem is when I bring in the LayoutInflater and then try to add my seekbars to the layout.</p> <p>After several days of mucking around with it and searching on the internet, I still can't see a solution to have a listactivity that uses a layoutinflator to create composite list rows consisting of an imageview, textview, and seekbar that I can communicate properly with.</p> <p>Does anyone have a solution? Code?</p> <p>What I've got so far goes something like:</p> <pre><code>public class MyListActivity extends ListActivity { private class MyView { public ImageView myImageView = null; public TextView myTextView = null; public SeekBar mySeekBar = null; } private class MyAdapter extends ArrayAdapter&lt;MyView&gt; { private ArrayList&lt;MyView&gt; arrayList; private MyListActivity theContext = null; public MyAdapter(MyListActivity context, int textViewResourceId, ArrayList&lt;MyView&gt; arrayListPassedIn) { super(context, textViewResourceId, arrayListPassedIn); this.volumeControls = arrayListPassedIn; theContext = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.dont_think_i_should_need_to_use_a_resource_here_cuz_it_should_be_generated_or_dynamic, parent, false); } arrayList.get(position).myImageView = new ImageView(theContext); arrayList.get(position).myImageView.setBackgroundResource(R.drawable.generic_image); if(position == 0) { arrayList.get(position).mySeekBar = new SeekBar(theContext); arrayList.get(position).mySeekBar.setMax(100); arrayList.get(position).mySeekBar.setEnabled(true); arrayList.get(position).mySeekBar.setOnSeekBarChangeListener( new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { Log.d("test", "0th seekbar touched"); } @Override public void onStartTrackingTouch(SeekBar seekBar) { Log.d("test", "0th seekbar touch lifted"); } @Override public void onProgressChanged(SeekBar seekBar, int arg1, boolean fromUser) { Log.d("test", "0th seekbar progress changed"); } } ); } else { arrayList.get(position).mySeekBar = new SeekBar(theContext); arrayList.get(position).mySeekBar.setMax(100); arrayList.get(position).mySeekBar.setEnabled(true); arrayList.get(position).mySeekBar.setOnSeekBarChangeListener( new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { Log.d("test", "*not* 0th seekbar touched"); } @Override public void onStartTrackingTouch(SeekBar seekBar) { Log.d("test", "*not* 0th seekbar touch lifted"); } @Override public void onProgressChanged(SeekBar seekBar, int arg1, boolean fromUser) { Log.d("test", "*not* 0th seekbar progress changed"); } } ); } //***this is the fuzzy part -&gt; I need to be able to obtain the layout for the 'parent ViewGroup' or something //to where I can somehow add my seekbar (and textview and imageview) and then return the 'parent view' //that is to say that, this method is required to return a View and I want to return a View that composits //my imageview, textview, and seekbar. One main problem seems to be that an ArrayAdapter won't allow me to add //child views dynamically. final View viewToAdd = arrayList.get(position). mySeekBar; LinearLayout layout = ???;//new LinearLayout(theContext); layout.post(new Runnable() { public void run() { layout.addView(viewToAdd); layout.destroyDrawingCache(); layout.buildDrawingCache(); } }); return ???; //layout.view?? Can I obtain the 'parent view' (the view for the entire row) somehow to return? } } private ArrayList&lt;MyView&gt; myArrayList; private MyAdapter myAdapter; @Override public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); setContentView(R.layout.layout_for_the_list_activity_all_it_contains_is_a_linearlayout_containing_the_listview); myArrayList = new ArrayList&lt;MyView&gt;(); myArrayList.add(new MyView()); myArrayList.add(new MyView()); mAdapter = new SettingsListViewArrayAdapter(this, R.layout.wtf_not_sure_what_I_should_put_here, this.myArrayList); setListAdapter(mAdapter); } catch (NullPointerException e) { Log.v(getString(R.string.app_name), e.getMessage()); } } } </code></pre> <p>For all I know I'm wayyy off track. From the looks of it, it's not even possible? Someone please help!? (and thanks in advance =-D ) </p> <p>P.S. I really don't care how to solve the problem, I just need to have a 'dynamically resizeable' list where each item contains an imageview, textview, and seekbar and to where I can modify each and receive callbacks for each individual seekbar. (if the solution scales, that would be cool but, most certainly not a requirement as the list will likely usually only contain less than 20 items)</p>
    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