Android :: ListView ArrayAdapter Data Updates Best Practices
Aug 26, 2010
I have an activity with multiple list views that are continuously receiving new values form a socket thread, another thread parses the data and updates the array adapters, then the ui thread calls notifyDataSetChanged() to cause the list to refresh.
My issue is that im refreshing all the list a couple of time a second, this causes the UI to be very laggy when some animations need to happen.
I was wondering what the best way is to update multiple lists with multiple value changes every second?
View 3 Replies
Feb 26, 2010
As above, is it done automatically? My list was empty once the orientation chMYanges? and nope, i need the orientation change.
My adapter
CODE:............
My onCreate
CODE:...................
View 3 Replies
View Related
Oct 20, 2010
I am working with a ListView, custom adapter and a large number of items. I read in a book for Android that is was more efficient to use what it called the holder pattern. That is to create a wrapper class for each view in the list view that cached the objects in the view so as to avoid calls to findViewById because those are supposed to be expensive. My question is what is better? To have 50,000 objects GC'd every time the user scrolls or to make the 4 or five calls to findViewById per view? Below is my implementation of what the book suggested.
@Override public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView; if (view == null) {
final LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.survey_item, null);
view.setTag(new SurveyItemWrapper(view));
} bindView((SurveyItemWrapper) view.getTag(), position);
return view; } private void bindView(SurveyItemWrapper surveyItemWrapper, int position)
{ final SurveyedItem surveyedItem = surveyedItems.get(position);
surveyItemWrapper.getDescription().setText(surveyedItem.getItemName());
surveyItemWrapper.getCube().setText(String.format("%9.2f", surveyedItem.getCube()));
surveyItemWrapper.getShipping().setText(String.format("%d", surveyedItem.getShipping()));
surveyItemWrapper.getNotShipping().setText(String.format("%d", surveyedItem.getNotShipping()));
} private class SurveyItemWrapper { private TextView description;
private TextView cube; private TextView shipping;
private TextView notShipping; private View view;
public SurveyItemWrapper(View view) { this.view = view;
} public TextView getDescription() {
if (description == null) { description = (TextView) view.findViewById(R.id.SurveyItemDescription); } return description;
} public TextView getCube() { if (cube == null) {
cube = (TextView) view.findViewById(R.id.SurveyItemCube);
} return cube; } public TextView getShipping() {
if (shipping == null) { shipping = (TextView) view.findViewById(R.id.SurveyItemShipping);
} return shipping;} public TextView getNotShipping() {
if (notShipping == null) { notShipping = (TextView) view.findViewById(R.id.SurveyItemNotShipping); } return notShipping; } }
View 2 Replies
View Related
Oct 27, 2010
Currently my ListView is filling up with the given String[] but I wanted to alternate some styles on the ListView items. Something weird is happening (I'm surely missing something obvious); The ListView Index is not fixed and the styles are not alternating as supposed. My Code is the following:
import android.app.ListActivity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;..................
View 3 Replies
View Related
Aug 24, 2009
I have a list (of messages) and I want to give the user the ability to remove these items from the list. I have extended an ArrayAdapter and give it an ArrayList of my messages and would like to simply remove an item from that list and then refresh the listview instead of reloading the entire list of sent messages. The problem is, if there's only one message and I remove it using listAdapter.remove(messageObject), the adapter is still calling getView and then throwing NullPointerExceptions all over the place. I'm not sure what the best way is to go about this.
View 1 Replies
View Related
Jul 21, 2010
I am trying to change the color on a specific row depending on different states. This is the code i have at the moment. code...
The code kinda works..but it changes all the rows. Any ideas?
View 5 Replies
View Related
May 27, 2009
I want to create a listview with rows that have an image and two textviews. This must be a very common activity but I can't find a class/or source code that does this.
View 9 Replies
View Related
Jul 10, 2010
I have an Android ListView, backed by an ArrayAdapter. When the user clicks on an item in the list, that item is removed. This all appears to work fine, you can click on each item until there are no items left.
However, it all goes wrong once text filtering occurs. Once the list has been filtered once, even if that filter is cleared, all subsequent calls to remove(Object) on the adapter fail to remove the item from the visible list. I've tried calling ListView.clearTextFilter() before removing the item, calling it after removing the item, and not calling it all. There's no difference.
I've looked through the source for ArrayAdapter.java and it seems that once filtering is set, the adapter uses one collection to respond to queries but updates a different one. I can see no obvious way to get it to revert its behaviour. Is this a bug or am I missing something?
View 1 Replies
View Related
Jan 9, 2010
We're designing an Android app that has several activities which are working in a wizard like way - user should pass from the activity #1 to activity #5 to get to the final activity (#6).
Since we know an activity can be suddenly terminated by OS on low memory we used Application class as a static storage for keeping the data the user inputs on "wizard" activities and other data our app needs for the whole session.
Unfortunately we've discovered this approach fails - looks like the Application class instance is also can be killed by OS (this was specifically discovered on Android 1.6 versus 1.5). Are our expectations wrong on this approach (we think Application class instance always lives for the whole app session)?
So the question is - what is the best practices on Android to keep data between activities deathes/restarts for the whole application session?
View 2 Replies
View Related
Apr 23, 2010
I juststarted programming in android a few weeks ago, so I am not entirely sure how to deal with listing values. I have some questions regarding displaying data sets from db in a list. Currently I have a cursor returned by my db points to a list of rows and I want display 2 columns values in a single row of the list.
The row xml looks like this:
CODE:...............
so I was thinking using simplecursoradapter which supposedly makes my life easier by displaying the data in a list. However that is only true if I want to display the raw data. For the purpose of my program I need to do some computations on the raw data sets, then display them. I am not sure how to do that using SimpleCursorAdapter.
Here's how I display the raw data:
CODE:.........
Is there a way to do computation on the data in those rows before I bind it with the SimpleCursorAdapter? I was trying to use an alternative way of doing this by using arraylist and arrayadapter, but that way I dont know to how achieve displaying 2 items in a single row.
This is my code for using arrayadapter which only display 1 text in a row instead of 2 textviews in a row:
CODE:.......
It's very obvious that it only displays one textview in a row because I set the second arrayadapter overwrites the first one! I was trying to use R.id.text1 and R.id.text2 for them, but it gave me some errors saying 04-23 01:40:58.658: ERROR/AndroidRuntime(3309): android.content.res.Resources$NotFoundException: Resource ID #0x7f070008 type #0x12 is not valid.
View 2 Replies
View Related
Jul 15, 2010
I have a ListView that I want to use with an ArrayAdapter to add different styled rows. The rows are created on different states in my application, and depending on the different states the rows should be styled(like colors and stuff). Here is some pseudo-code:
on creation:
mArrayAdapter = new ArrayAdapter(this, R.layout.message);
mView = (ListView) findViewById(R.id.in);
mView.setAdapter(mArrayAdapter);
On different states, which is triggered by another thread using a MessageHandler, add a row to the list containing a message: mArrayAdapter.add("Message");
This works fine, messages are popping up in the list depending on different states, but I want to have the rows styled differently. How to do this? Is the solution to create a custom ArrayAdapter with a custom Add() method?
View 1 Replies
View Related
Nov 3, 2010
Often, a simple of ArrayAdapter does what I want and during early development I will provide the android.R.simple_list_item_1 for the view id required by the ArrayAdapter constructor. Is it possible to provide a customized view which is based on the android.R.simple_list_item_1 to the ArrayAdapter constructor?
I do not fully understand Android's 'include' functionality, but what I would like to do is something like:
Define a new TextView based on customizing the android.R.simple_list_item_1.
(I have no idea what the valid syntax would be)
code...
Reference my customized TextView. I assume that something like this would go into my layout directory. Then in my code I would do something like:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.id.MyTextView, null);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, view.getId(), myArrayOfData);
Is this possible and if it is, what is the appropriate syntax to accomplish what I want?
View 1 Replies
View Related
Sep 14, 2010
I am having a weird issue. I have an ArrayAdapter which I am sorting. This displays properly on my screen, however when I check the actual data source, the contents have not been sorted. How can I ensure that sorting my ListAdapter will also sort my data source?
CODE:....
This shows that my data source hasn't been updated, even though my ListAdapter presents my ListView in the correctly sorted order.
For example:
If my data source is [10,9,1,20] after sorting my ListView will show [1,9,10,20] but the data source will still be [10,9,1,20]
View 1 Replies
View Related
Oct 13, 2010
I'm new to android programming and I would like some help. I have the following code:
Object[] list_cities = parsedData.getCityname().toArray();
Object[] list_countries = parsedData.getCountryname().toArray();
// Display the available locations
list_search.setAdapter(new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_2, android.R.id.text1, list_cities));
list_search.setAdapter(new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_2, android.R.id.text2, list_countries));
I would like to display double rows for each entry in the list (city and country) but I have no luck. With the above code I only see the countries but not the cities. Is there any way to add both the adapters to the list_search so I can see all the data?
View 3 Replies
View Related
Feb 16, 2010
I'm trying to get my first Android app stable enough for the marketplace, and I've hit a brick wall with one exception that I don't understand. Probably I'm doing something stupid, but I can't tell what, and after several hours googling and experimenting, I thought I'd see if I can get some help. My Activity extends ListActivity, and the parts I think are most important are extracted below:
GroupedListAdapter is a simple class that extends BasedAdapter to provide headings for sections of the list (not unlike the Fancy ListView tutorials that are floating around).
I create this in onCreate, and it works fine. Inside onListItemClick, I do some actions which will create a different set of list contents. I "clear" the adapter, which empties the contents, and call reload, which repopulates it. Then I call notifyDataSetChanged.
Most often, this seems to work, but also fairly often, I get the exception following the code snippets below - this seems to indicate the ListView is not in sync with my changes. Lately this crash happens 100% of the time under the simulator.
CODE:.........................
View 8 Replies
View Related
Oct 2, 2009
I'm the happy owner of an Hero since one week but I have an "issue" with the Weather widget, the widget itself and the info under the clock in the home page. I live in France but I work in another country, I've not enabled auto data roaming as it costs a lot. Problem is that at 6:30am for instance the forecasts are updated, then I cross the border, data mode becomes disable and then 6h after, the logo still shows a moon and the 7C based on 6:30 update. And it stays in this useless state until 6pm when I leave the roaming mode returning to France.
How can I make the 2 widgets showing estimated forecast (looks like 3 days are available) even if no update is possible ? Before the Hero I was using a Winphone with SBP Mobile Shell and the weather widget was taking care of the time of the day to change the logo/forecast even not connected. If not possible with the HTC, could you point me to a weather widget more "clever" than this one?
View 3 Replies
View Related
Nov 24, 2010
My ListView has to be customized like, it should have three imageView in each ListItem along with the name and date that has to populated from the DB,added with that, once i click upon the a list item ,that corresponding Listitem information has to be displayed in another Screen...The Size of the List should be based on the Cursor object from DB..and it should be possible to add data in to the Listview..too. how to proceed the above said..Please check the ScreenShot of ListView that i mentioned..(My ListView should have to be like this only)..[SampleListView Below- please click that link][1] http://imgur.com/RjtXe.jpg.
View 1 Replies
View Related
Jul 23, 2010
Here is my Arrival.Java. May i know why isn't there any data being shown on my ListView?
View 2 Replies
View Related
Jul 6, 2010
I have a problem with listView, I used ArrayList to store data, and a customized Adapter. But, when I remove all the data, and add one item again, it does not display anything in this list. What happens to my List, can anyone help me?
View 1 Replies
View Related
Jun 25, 2010
I have a ListView which its contents could change at any time (eg. a list of cities within a state; a new city could be added to the state in our database at anytime). How do I implement, if possible, the onListItemClick event to work with this? For example, if a user selects a certain city in the ListView, i should be able to pass a value that independently identifies what city was clicked onto my next activity. I can't listen for positions because they could change with an addition or removal of a city.
View 1 Replies
View Related
Mar 31, 2010
Does someone know how to get a 'flat' map / list of the contacts and there phone numbers. I am currently using this to build a datastructure, so I can display it in a lIstView, which is not really fast. The code shows that I do two queries. Would it be possible to do this with one query so that I end up with a just one cursor. The structure ideally would be: contact name number number contact name number
This would then allow me with a custom listView Adapter to display the data and make the names non clickable.................
View 3 Replies
View Related
Oct 20, 2009
I'd like to map an Array of "complex" data to a ListView. In a very simplified form my data model would look like something like this:
Code...
View 2 Replies
View Related
Aug 17, 2009
I currently building an android apps that retrieve data from a distant Web service and I search an efficient way to bind data form XML to ListView. I already use CursorAdapter and i search on the web for an "XmlAdapter". I read on Google IO topic "Coding for Life - Battery Life, That Is" (http://code.google.com/events/io/sessions/ CodingLifeBatteryLife.html) that is more efficient to use "stream parser" instead of "tree parser" but I don't find the way to build a class that implement ListAdapter because of stream parser can't navigate backward so I don't understand how implement method that use "position" parameter (How retrieve data before current XML Parser position?).
View 8 Replies
View Related
Jul 26, 2010
With the below code, nothing appears in the ListActivity as I would expect.
No errors are shown in logcat.
CODE:..............
View 1 Replies
View Related
Sep 7, 2010
How to get data from SQLite which contains some data. How to place it(the data) in the listview.
View 2 Replies
View Related
Sep 30, 2010
I'm having my first stumbling steps with android and are trying to modify an existing notepad example from Android dev. I have a database with an existing column named CREATED_DATE (of the note) but the data for that column is presented as System.currentTimeMillis(). This is all good and probably in line with conventions since it's created by the developers.
But my problem is that I want to present the date in a ListView using the format "30 sep". My problem, how do I convert the data to that format before presenting it in the ListView? Right now I'm using this kind of adapter:
CODE:...........
Now, I've figured out how to convert currentTimeMillis() to todays date but how can I convert the data coming from the cursor before I toss it into the adapter?
View 1 Replies
View Related
Jun 22, 2010
package one.two;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.database.Cursor;
import android.inputmethodservice.Keyboard.Row;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView; Code...
View 3 Replies
View Related
Aug 10, 2010
I must be missing something simple here.I've searched around but don't think my search query is touching on the right topics to yield results. Anyhow, what I'm after is running through the array of data I bind to a ListView after a "Submit" button has been clicked.
View 3 Replies
View Related
Dec 27, 2009
How do you make those standard header labels in the ListView Control?
An example would be in the contacts application you see the first letter of the grouped contacts for each letter in the alphabet.
If possible provide some code snippets on how to construct the grouped data and the display of the ListView.
View 4 Replies
View Related
Oct 12, 2010
I'm pretty new to java programming and am looking to do basic data mappings.What I want to happen is when you click an item it goes to it's subcategory.I'm not worried about switching the data when an item is clicked. I'm just not sure how to create the data set in an efficient way using Android.Eventually this will be driven by a database but I want to figure out how to use mock-data to get this working first.I'd like to be able to access it like myData['category2'] or myData['category2']['subcategory3']Should I create this in xml files and link them up or is it best to create a new class structure for it?
View 1 Replies
View Related