Hello,
I'm currently facing a problem and the solution I use does not satisfy me.
I'm pretty sure there's a correct way to handle this case so I ask here :)
My problem is simple I have a listview with items that have a gone part
that I show on the last clicked item.
This part works well, I also want the clicked item to be fully visible and
here's comes trouble.
With non expanding item it's easy to do with requestChildRectangleOnScreen
but in my case I can't find a way for the list to be aware of the new size
of the item so it will only scroll the item to show the expanded part.
The solution I use is if the requestChildRectangleOnScreen was in effect or
if item is last or before last item then scroll by the size of the expanded
item (that i get via measure).
This works but not perfect since sometimes I scroll the list (when i before
last item) when it would not have been needed :(
The code used :
public void onItemClick(AdapterView<?> arg0, View arg1, int i,
> long l) {
> // TODO Auto-generated method stub
> if (curView != null) {
> try {
> curView.setVisibility(View.GONE);
> } catch (Exception e) {
> }
> }
>
> ListView listView = (ListView)
> findViewById(R.id.mediaslist_list);
>
> curView = ((RelativeLayout)
> arg1.getTag(R.id.movieslist_item_details));
> curView.setVisibility(View.VISIBLE);
> int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0,
> MeasureSpec.UNSPECIFIED);
> int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0,
> MeasureSpec.UNSPECIFIED);
> curView.measure(widthMeasureSpec, heightMeasureSpec);
>
> if (listView.requestChildRectangleOnScreen(arg1, new
> Rect(0, 0, arg1.getRight(),
> arg1.getHeight()), false)
> || listView.getLastVisiblePosition() <= (i + 1)) {
> listView.smoothScrollBy(curView.getMeasuredHeight(),
> 150);
> }
> }
>
If someone have the correct way to handle this case thanks for answering :)
Regards,
Tolriq.
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en