[android-developers] Re: Modify a textview value in a custom listview after clicking

2012-03-27 Thread Deep
Hi Jason,

If you have to change view which is already displayed and you have
data in your adapter which you have to display then, On List item
click you will get the view of clicked
position adapter view and you can change what ever you want in that
adapter view.

Thanks  Regards,
Deepchand Singh


On Mar 26, 2:29 am, Jason Tian tianji...@gmail.com wrote:
 Hi, Justin

 May I ask why we shouldn't modify the view after it has been
 displayed?
 Cause I've been doing this a lot in my app...

 Thanks,
 Jason

 On Mar 26, 9:12 am, Justin Anderson magouyaw...@gmail.com wrote:







  Modify the data in the adapter and then call notifyDataSetChanged().  Once
  the view has been created and displayed on the screen you should NEVER
  modify it directly.

  Thanks,
  Justin Anderson
  MagouyaWare Developerhttp://sites.google.com/site/magouyaware

  On Sat, Mar 24, 2012 at 5:44 AM, Akram akram0...@gmail.com wrote:
   This listview has an adapter that is linked to a layout for each row
   (itemrow.xml)

   The price value (500-250 300) is a textview

   How can we access to it, to modify it, once clicked on a button ?

   Thanks you for the help.

   l

   Android

   Price: 500

   l

   Php

   Price: 250

   l

   C++

   Price: 300

   l

   --
   You received this message because you are subscribed to the Google
   Groups Android Developers group.
   To post to this group, send email to android-developers@googlegroups.com
   To unsubscribe from this group, send email to
   android-developers+unsubscr...@googlegroups.com
   For more options, visit this group at
  http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


Re: [android-developers] Re: Modify a textview value in a custom listview after clicking

2012-03-27 Thread Justin Anderson

 If you have to change view which is already displayed and you have
 data in your adapter which you have to display then, On List item
 click you will get the view of clicked
 position adapter view and you can change what ever you want in that
 adapter view.


Just because you CAN do something doesn't mean you SHOULD.  The proper way
to implement this is by changing the data in the adapter and calling
notifyDataSetChanged() on the adapter.

Thanks,
Justin Anderson
MagouyaWare Developer
http://sites.google.com/site/magouyaware


On Mon, Mar 26, 2012 at 1:22 AM, Deep deep...@gmail.com wrote:

 If you have to change view which is already displayed and you have
 data in your adapter which you have to display then, On List item
 click you will get the view of clicked
 position adapter view and you can change what ever you want in that
 adapter view.


-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

[android-developers] Re: Modify a textview value in a custom listview after clicking

2012-03-26 Thread Jason Tian
Hi, Justin

May I ask why we shouldn't modify the view after it has been
displayed?
Cause I've been doing this a lot in my app...

Thanks,
Jason

On Mar 26, 9:12 am, Justin Anderson magouyaw...@gmail.com wrote:
 Modify the data in the adapter and then call notifyDataSetChanged().  Once
 the view has been created and displayed on the screen you should NEVER
 modify it directly.

 Thanks,
 Justin Anderson
 MagouyaWare Developerhttp://sites.google.com/site/magouyaware







 On Sat, Mar 24, 2012 at 5:44 AM, Akram akram0...@gmail.com wrote:
  This listview has an adapter that is linked to a layout for each row
  (itemrow.xml)

  The price value (500-250 300) is a textview

  How can we access to it, to modify it, once clicked on a button ?

  Thanks you for the help.

  l

  Android

  Price: 500

  l

  Php

  Price: 250

  l

  C++

  Price: 300

  l

  --
  You received this message because you are subscribed to the Google
  Groups Android Developers group.
  To post to this group, send email to android-developers@googlegroups.com
  To unsubscribe from this group, send email to
  android-developers+unsubscr...@googlegroups.com
  For more options, visit this group at
 http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Modify a textview value in a custom listview after clicking

2012-03-26 Thread Danny D
Does the no modification rule apply to moving the views around?

I've got a ListView object, where I'm using the TouchListView.java
adaption to allow the user to resort the items

Does this movement qualify as a modification?  I'm performing data
changes within the Adapter, but the actual view items are getting
moved through the touch interface / view code.

DD

On Mar 25, 11:29 pm, Jason Tian tianji...@gmail.com wrote:
 Hi, Justin

 May I ask why we shouldn't modify the view after it has been
 displayed?
 Cause I've been doing this a lot in my app...

 Thanks,
 Jason

 On Mar 26, 9:12 am, Justin Anderson magouyaw...@gmail.com wrote:







  Modify the data in the adapter and then call notifyDataSetChanged().  Once
  the view has been created and displayed on the screen you should NEVER
  modify it directly.

  Thanks,
  Justin Anderson
  MagouyaWare Developerhttp://sites.google.com/site/magouyaware

  On Sat, Mar 24, 2012 at 5:44 AM, Akram akram0...@gmail.com wrote:
   This listview has an adapter that is linked to a layout for each row
   (itemrow.xml)

   The price value (500-250 300) is a textview

   How can we access to it, to modify it, once clicked on a button ?

   Thanks you for the help.

   l

   Android

   Price: 500

   l

   Php

   Price: 250

   l

   C++

   Price: 300

   l

   --
   You received this message because you are subscribed to the Google
   Groups Android Developers group.
   To post to this group, send email to android-developers@googlegroups.com
   To unsubscribe from this group, send email to
   android-developers+unsubscr...@googlegroups.com
   For more options, visit this group at
  http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


Re: [android-developers] Re: Modify a textview value in a custom listview after clicking

2012-03-26 Thread Justin Anderson

 May I ask why we shouldn't modify the view after it has been displayed?

Certainly... It is pretty much a basic principle for good OO design.  Your
adapter represents the data that needs to be displayed.  Your listview item
views should do nothing more than use the data it has to decide how it
should be displayed.

Let's take a look at how listviews and adapters work in Android... Let's
say your adapter has 100 data items in it.  In your case each data item
consists of a string (item name) and a price (int or float).  Even though
your adapter has 100 data items in it, the listview does not contain 100
views... It holds on to a few more views than can be displayed on the
screen at any given time.  So, if your screen can display 10 list view
items at a time, the listview itself will only have about 13 or 14 actual
views that it uses.  When you scroll, it reuses those views to save on
memory and the time it takes to create a brand new view.

So, what happens if the user clicks on a view and you change the price in
the view but not the adapter (data item)?  When the user scrolls away and
comes back the value that was changed will be lost and the original value
will still be displayed.  To get around that you could change both the view
AND the adapter, but then you are violating the DRY principle: Don't Repeat
Yourself.  If you are making the same changes in different places then you
are probably doing something wrong and there is a better way to go about
doing it.

Have you ever noticed how hard it is to get a reference to an individual
list view item?  There is a reason for that... it is only intended to be a
display of your underlying data model.  Anything that you want to do to
change the views should be done in the data model.  That way, you change
things in one place, call notifyDataSetChanged() and then everything
magically updates itself.

Now, this means that if you are going to have a complex set of data
(meaning typically more than a single type of data in the view) then you
will most likely want to subclass one of the existing Adapter classes.  I
usually subclass BaseAdapter to suit my needs.  You also will need to
implement your getView() method in the adapter properly.  That is where you
use the data model to determine how the list view item should be
displayed.  I would recommend looking up the Android View Holder pattern
and implementing that in this method as well, since that will help speed up
the scrolling of your listviews.


 Does the no modification rule apply to moving the views around?

I guess that would depend on how it is done.  This case is obviously a
little different from what the OP was wanting to do.

I've got a ListView object, where I'm using the TouchListView.java
 adaption to allow the user to resort the items

I've not familiar with that so I can't really comment on it.

Does this movement qualify as a modification?  I'm performing data
 changes within the Adapter, but the actual view items are getting
 moved through the touch interface / view code.

As long as you are updating your adapter and not duplicating code by also
manually updating the views you are probably ok.  If you are duplicating
some code you may want to look and see if there are some ways you can
optimize what you are doing.

Hope this helps clarify things a bit!


Thanks,
Justin Anderson
MagouyaWare Developer
http://sites.google.com/site/magouyaware


On Mon, Mar 26, 2012 at 1:21 AM, Danny D daniel.m.dev...@gmail.com wrote:

 Does the no modification rule apply to moving the views around?

 I've got a ListView object, where I'm using the TouchListView.java
 adaption to allow the user to resort the items

 Does this movement qualify as a modification?  I'm performing data
 changes within the Adapter, but the actual view items are getting
 moved through the touch interface / view code.

 DD

 On Mar 25, 11:29 pm, Jason Tian tianji...@gmail.com wrote:
  Hi, Justin
 
  May I ask why we shouldn't modify the view after it has been
  displayed?
  Cause I've been doing this a lot in my app...
 
  Thanks,
  Jason
 
  On Mar 26, 9:12 am, Justin Anderson magouyaw...@gmail.com wrote:
 
 
 
 
 
 
 
   Modify the data in the adapter and then call notifyDataSetChanged().
  Once
   the view has been created and displayed on the screen you should NEVER
   modify it directly.
 
   Thanks,
   Justin Anderson
   MagouyaWare Developerhttp://sites.google.com/site/magouyaware
 
   On Sat, Mar 24, 2012 at 5:44 AM, Akram akram0...@gmail.com wrote:
This listview has an adapter that is linked to a layout for each row
(itemrow.xml)
 
The price value (500-250 300) is a textview
 
How can we access to it, to modify it, once clicked on a button ?
 
Thanks you for the help.
 
l
 
Android
 
Price: 500
 
l
 
Php
 
Price: 250
 
l
 
C++
 
Price: 300