Android :: Proper Implementation Of Changing ListView Data With Cursor Adapter

Sep 3, 2010

I have a ListView populated via a CursorAdapter. I give my user the ability to alter the data in the list. For example, the user can mark a row as being unread (the data are messages).

Suppose my user marked a row unread. Would a proper implementation mark the row in the database as read and then requery the Cursor?

Android :: Proper implementation of changing ListView data with Cursor Adapter


Android :: Cursor Adapter - Binding Multiple Item Values In ListView

Jan 12, 2010

I have the following code to intantiate a SimpleCursorAdapter to use with a ListView. As you can see I have passed the R.layout.log_item to display the list items, and one value/control to bind to (TripDate).

SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.log_item,c,new String[] {DBAdapter.KEY_LOG_TRIPDATE},new int[]{R.id.txtTripDate});

This works. I currently only have one widget in the layout xml, a TextView to hold the TripDate.
How do I pass multiple binding parameters for the additional widgets in the layout? So I can also display other info.

View 1 Replies View Related

Android :: Droid Save Checkbox State In ListView With Cursor Adapter

Mar 9, 2010

I cant find a way to save the checkbox state when using a Cursor adapter. Everything else works fine but if i click on a checkbox it is repeated when it is recycled. Ive seen examples using array adapters but because of my lack of experience im finding it hard to translate it into using a cursor adapter. Could someone give me an example of how to go about it.code...

View 3 Replies View Related

Android :: Moving Cursor Adapter Cursor Creation To Background Thread

Mar 29, 2010

The structure of some of my activities is a simple ListView with a custom CursorAdapter. The cursor is created in onCreate() on the activity from a SQLite database. The problem is that querying the SQLite database can be quite slow at times with lots of data (and let's assume I've already optimized the sql query as much as possible). Because it occurs in onCreate() on the UI thread, I get ugly black screens when opening the activity, which sometimes turn into ANRs, on a slow phone like the G1. I want to load the cursor in a background and show "Loading.." on screen while doing so. I saw AsyncQueryHandler used extensively in the framework, but this seems a solution geared more towards Content Providers and not application-local SQLite databases. I then thought of trying to load the cursor in a background thread, but realize that this might be problematic, as the CursorAdapter should be instantiated in onCreate() and should take a cursor as a parameter. The latest thought I had was to instantiate an empty MatrixCursor in onCreate() and pass that to the cursor adapter, while kicking off a thread/TimerTask to query the database. Then, on database cursor load, call cursorAdapter.change Cursor to the properly filled cursor. This doesn't seem very elegant and seems quite wasteful, however.

View 10 Replies View Related

Android :: Getting Updated Array Of Data From ListView / Adapter

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

Android :: Resetting ListView After Adapter's Data Changed

Nov 21, 2010

I have a list view that can display items based on internal state (it has items, and 'viewed' items). i need to be able to toggle between the two states, i do that using a simple button that change the adapter's state and the adapter then called notifyDatasetChanged(). My data DOES gets updated, however i was facing two problems:

if in the previous mode the list was partially scrolled, it stayed in that state after i changed the data set (if i was half the way down i'll be half way down in the new data set as well, this is not the behavior i want, but i cols not find a way to scroll the list manually to position 0. any ideas?

(setSelected is not exactly a solution since i DON'T want any selection i want to stay in touch mode) In my list View each item has an image that is fetched from the net, as so it's being brought using my networking manager and i send the image request ONLY if i'm in this screen for the first time OR if scroll state is idlle, i didn't want to start loading images from the getView method since if i fling the screen it may load a lot of unnecessary images. However when calling notifyDatasetChanged() the scroll listener methods are not called. i solved this one by using notifyDatasetInvalidated even though my data is not empty, is there a better way to solve this issue ?

View 1 Replies View Related

Android :: Resetting The ListView After Adapter's Data Was Changed

Nov 21, 2010

I have a list view that can display items based on internal state (it has items, and 'viewed' items). i need to be able to toggle between by two states, i do that using a simple button that change the adapter's state and the adapter then called notifyDatasetChanged(). My data DOES gets updated,

However i was facing two problems:

1. if in the previous mode the list was partially scrolled, it stayed in that state after i changed the data set (if i was half the way down i'll be half way down in the new data set as well, this is not the behavior i want, but i cols not find a way to scroll the list manually to position 0. any ideas ?

2. In my list View each item has an image that is fetched from the net, as so it's being brought using my networking manager and i send the image request ONLY if i'm in this screen for the first time OR if scroll state is idlle, i didn't want to start loading images from the getView method since if i fling the screen it may load a lot of unnecessary images. However when calling notifyDatasetChanged() the scroll listener methods are not called. i solved this one by using notifyDatasetInvalidated even though my data is not empty, is there a better way to solve this issue ?

View 2 Replies View Related

Android : Using A ListView - An Adapter - How To Use Notify Data Set Changed()

Jun 3, 2010

Just watched Google IO's "World Of ListView" presentation [1]. Awesome stuff. I think every Android dev should watch it.

One gotcha for me was to use BaseAdapter.notifyDataSetChanged[2]. I checked code that I have written more than a year ago and found that I did try to use that, but commented it out with '// doesn't work' and I use requery() instead. That is of course much slower.

I now tried to find out why I wrote that it didn't work and hoped that I am meanwhile so much wiser that it would be easier to understand the proper use of the API. So much for ambition: The effect I see is that the list is not updated after I call notifyDataSetChanged(), but works with requery() and I am not so much wiser.

What could be the issue here? I use a ResourceCursorAdapter and only implemented the bindView() Method. This method is called when I call notifyDataSetChanged() on the RCAdapter. However the method is called with a cursor that contains the stale data.

Now there was a second gotcha from the presentation that I couldn't really place. It was said that the data should be committed on the GUI thread too (before calling notifyDataSetChanged()). I couldn't place it then, but I now suspect that this may be the issue here. So the rule would be to do the commit() on the Cursor on the UI thread? I do the updates to the database using a Service. This Service runs in the background, sometimes the app is in the foreground at the same time, but most often not. So I don't see how I should commit something in a UI thread? Is this the issue here? There are two different Cursors and I could only use notifyDataSetChanged when it would be the same cursor, otherwise requery() is correct?

Is that it? Any ideas? Is somebody going to write a book "The Android SDK - The missing manual"?

View 4 Replies View Related

Android :: Show Cursor Data In A Listview With Subsection Headings

Feb 3, 2010

I have not found an example yet with a solution to the following task.

I have a SQLite database with two tables- BOOK and AUTHOR. I execute a query on the DB that uses a join and results in a cursor that looks like this. code...

New authors and books can be added to the database at any time, and I also need the user to be able to remove books, hence the [ ] checkboxes.

So i have two row layouts, row_author.xml & row_book.xml. I detect when I need to show a row_author subheading by seeing when the current author has changed compared to the previous row. But I have realized that the rendering of an Author Row will then move the cursor forward one row and jump over their first book.

Can anyone suggest a good approach to presenting data like this? Is there a much better way to do this?

View 2 Replies View Related

Android :: Calling ListView.setSelection Has No Effect When Called Directly After Adapter Data Was Invalidated

May 4, 2009

I have a ListView whose position should be changed automatically along with the data. So, when the adapter's data has changed (adapter is calling notifyDataSetInvalidated), I'm calling setSelection. This has no effect. If the call to setSelection is done later (e.g. in a click handler) it is working.

The second problem is, that the ListView maintains the scroll position of the list although the data is completely invalidated, that makes no sense IMO.

It looks like a call to layoutChildren before the call to setSelection does help in this case, but layoutChildren is protected.

What is the correct way to do this?

View 2 Replies View Related

Android : Implementation Of A Simple AdapterView Where Items Comes From An Basic Adapter

Apr 1, 2010

I'm trying to make (for learning purposes) my own implementation of a simple AdapterView where items comes from an basic Adapter (ImageAdapter from sdk samples).

Actual code is like this:

public class MyAdapterView extends AdapterView<ImageAdapter> implements AdapterView.OnItemClickListener{
private ImageAdapter mAdapter;
public MyAdapterView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initThings();}
private void initThings(){
setOnItemClickListener(this);}
@Overridepublic ImageAdapter getAdapter() {
// TODO Auto-generated method stubreturn mAdapter;}
@Overridepublic void setAdapter(ImageAdapter adapter) {
// TODO Auto-generated method stub
mAdapter=adapter;
requestLayout();}
View obtainView(int position) {
View child = mAdapter.getView(position, null, this);
return child;} code...

This isn't a coding masterpiece, it just displays a pseudo-listview with pictures. I know i could've used ListView, GridView, Spinner, etc. but i'm relative new to android and i'm trying to figure out some things on it. Well, the question here is Why is my onItemClick not firing?

Using the same ImageAdapter with a GridView, everything works ok, but when i use with above class, i get nothing. Inside AdapterView.java there is code for those click, longclick, etc events... so why can't i just fire them? Maybe i'm misunderstanding basic things on how AdapterView works? Should I extend other base classes instead? And why? Hoping to find more experienced guidance on here, thanks in advance.

View 2 Replies View Related

Android :: An IF Statement In A Cursor Adapter?

Jul 15, 2010

CODE:...........................

View 1 Replies View Related

Android :: Cursor Adapter With Multi Select

Nov 11, 2010

I've written an APP the uses has a small SQL lite DB and using a cursor adapter I can retrieve the records and populate a list view with them. from there I can get the Id of a selected item and delete it from the DB which works great. the issue I have is that as the DB grows deleting one row at a time would be slow and frustrating so I wanted to know if there was any way to allow multiple selections possibly with check boxes or by even changing the text color of the items selected so that I can retreiving their relative ID's.

I have read some posts that talk about custom cursor adapters but I am not sure how to adapt them to my code.

I have posted my code below.

CODE:.........................

View 1 Replies View Related

Android :: Janky Custom Cursor Adapter

May 25, 2010

I have a Custom Cursor Adapter. It shows a list of installed applications with an icon, name and checkbox on each line item. I cache the list of applications in a database for faster retrieve and to store the state of the checkbox. However, I can't store the application icon in the db because sqlite doesn't support blobs. They list works rather well except that it is "janky" as described by Brad Fitzpatrick at Google IO (https://wave.google.com/wave/waveref/ googlewave.com/w+3kgmObZwO ). I'm trying to make my app non-janky by following the tutorial here: [url]... but I'm having trouble.

The reason my list is janky is because I look up each icon as you scroll down the list. drawable = pm.getApplicationIcon(c.getString(c.getColumnIndex(SmartLockDbAdapter.KEY_P­ACKAGE)));

getApplicationIcon takes too long to return to make for a smooth scrolling list. I would like to perform the action in the background with an AsyncTask but because bindView gets called repeatedly in a short time span, my icons end up with the wrong list item. I need help.

I've posted my whole ListActivity below in hopes that it helps other people. It's much harder to find an example of a working CursorAdapter then it is an ArrayAdapter.

CODE:........................

View 4 Replies View Related

Android :: How To Use Simple Cursor Adapter To Include Button?

Jun 9, 2009

I have read the Gallery2.java example, which show how to map a Column's value to an element in the view I want to create (in this case, it maps 'NAME' to text1 element0. But what if I have a Button in my view, how can I know which Person is being clicked? or how can I query the person's info when a button in the new is clicked?

From the Gallery2.java example:
SpinnerAdapter adapter = new SimpleCursorAdapter(this,
// Use a template that displays a text view
android.R.layout.simple_gallery_item,
// Give the cursor to the list adatper c,
// Map the NAME column in the people database to...
new String[] {People.NAME},
// The "text1" view defined in the XML template
new int[] { android.R.id.text1 });
Gallery g = (Gallery) findViewById(R.id.gallery);

View 2 Replies View Related

Android :: Is It Worth Writing A ContentProvider - Using Cursor Adapter?

Sep 14, 2010

We are connecting to a number of WebServices and fetching a lot of structured data(XML). We are parsing this data and storing them into SQLite tables. This part of the application runs periodically in the back ground.

On the foreground, the data fetched is displayed in ListViews. We have used ArrayAdapter to back these lists up. The thing is, every time the Actvity starts or data set is refreshed, we have to load the ArrayLists by querying the database and call notifyDataSetChanged() on the Adapter. This slows down the application and affects the User experience.

Question: 1. I'd imagine using a CursorAdapter might result in performance gain, since the framework will take care of managing the cursor. Is this assumption valid? 2. Will the CursorAdapter take care of reflecting updates to the database on the screen automatically? 3. Will I have to write a ContentProvider if I choose to use CursorAdapters? 4. Are there any other considerations that we need to make?

View 6 Replies View Related

Android :: Trying To Write Custom Adapter For Database Cursor

Jun 29, 2009

I been using custom adapters based on the BaseAdapter and I usually populate my data at the getView() funtion.

Now I'm trying to write my custom adapter for my database cursor which now will be based on a CursorAdapter.

I'm getting confused where I should do the populating work? Along with how do I implement my inflating and populating "smart/efficient code based on RomainGuy presentation."

View 8 Replies View Related

Android :: Causes A Redundant Cursor Adapter To View Copy

Oct 28, 2009

CursorAdapter is great, i'm a big fan. I notice that both newView() and bindView() are passed Cursors, indicating that extracting stuff from the Cursor and sticking it in the view should happen inside those overrides.

however in the source for CursorAdapter.getView() i see that bindView() gets called whether the view is recycled or not. in the new view case, this causes a redundant Cursor to View copy.

IMHO, CursorAdapter should call newView() if the view couldn't be recycled, or bindView() if it could.

View 3 Replies View Related

Android :: List View Separators Using A Cursor Adapter

Oct 5, 2010

I have a ListView which is populated using a CursorAdapter. I'd also like to have some separators in my ListView. I have accomplished this with an ArrayAdapter, but I'm not sure how to accomplish this with a CursorAdapter. Are there any strategies for doing so? Or am I out of luck?

View 1 Replies View Related

Android :: How To Only Show Specific Elements In A Cursor Adapter

Jul 23, 2010

I have a custom CursorAdapter that is taking items from a database and displaying them in a listview. If possible, I would like to display only certain elements based on some boolean value within a database element. Here is something similar to what I would like to do:

package itp.uts.program;

import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;
//Adapter tests if an element is read or unread, and bolds the items that are unread
public class BoldAdapter extends CursorAdapter. Code...

View 2 Replies View Related

Android :: Simple Cursor Adapter - List View

Jun 9, 2010

I have table with 3 columns which is binded to an XML document with three text views.

CODE:........

Depending on the value store in the third column, I have to decide whether i should display this row or not

How should, I go about with this.

This is what I have so far :

CODE:...............

View 2 Replies View Related

Android : Binded Spinner Widget - Cursor Adapter?

Aug 24, 2009

I successfully binded a spinner widget to a simple cursor adapter, but I started having problems when I tried to add a new item to the table which feeds the spinner by clicking an "add new item" button. The idea was to launch a new activity which returns the rowid of the just added element, and use it to set the new position.

What I basically did is to implement something like:

break; in the "onActivityResult" method, the rowid has the correct value but setSelection has no effect. I also tried to force the argument to some other values, but still with no result. If I call it in the onCreate method, it works beautifully. Moreover, I am still not sure that setSelection is the right method to call, since its arg is named "position" in the doc, while I am passing an "id".

View 2 Replies View Related

Android :: Photo URI Of Contact Image - Using With Simple Cursor Adapter

Apr 8, 2010

I want to write a short app for getting some info from contacts, the first list screen I have should display the user Image (or an Image from resources if no such image exists) an the user display name. The problem is I don't seem to find a query that will provide me with the display name and a user id And the image URI in the same query. Moreover I'm aware of the fact that if the user has no image and the URI is empty or null i will most likely to get an exception while the adapter calls setViewImage(). Is there a simple way around it or should I override the setViewImage() or bindView() methods?

Also about the query, any chance I can make a single query for contact URI, _ID, contact_id and display name? my current queries: To get the contacts:
private Cursor getContacts() { Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = new String[] ContactsContract.Data._ID,ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.DISPLAY_NAME };
String selection = ContactsContract.Data.MIMETYPE + " = ?";
String[] selectionArgs = {ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder); }

If I have a contact id and want the image:
int _id = m_cursor.getColumnIndex(ContactsContract.Contacts._ID);
//try to retrieve the photo, if exists.
Uri photoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
m_cursor.getLong(_id)); InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(m_context.getContentResolver(), photoUri);
Here I get from a cursor with _ID column the id and then creating the uri, I know I can get a row number but I'm not familiar enough with contentProvider to know how to join tables to get it all in one query (if even possible).

View 2 Replies View Related

Android :: Cursor Adapter Making My Display Choppy - When I Scroll

Jul 26, 2010

can anyone tell me what im doing wrong with my cursorAdapter? its making my display choppy when i scroll. I used to have it within a getview but was ripped (rightfully so) on IRC several times because thats not the right place for it. Im still learning and just trying to correctly wrap my head around things.

http://pastebin.com/Dc5ppHUM

View 3 Replies View Related

Android :: Add Childs To My Custom View Group With A Cursor Adapter?

Oct 13, 2010

I've got a schedule Class, which is simply a custom ViewGroup (with custom onMeasure() and onLayout()), which enables me to place childs(=events) with LayoutParams for column/row start and column/row end. The number of childs and their LayoutParams depend on database entries.

Now I'm trying to add childs (events) from my database. I'd have to use a Cursor Adapter, so my schedule Class has to extend ListView, right? I tried that but the newView() method of the adapter is never called. Why not? My custom ListView doesn't ask the adapter for childs, no childs are added. I also can't add the childs by hand calling schedule.addView() if I extend from AdapterView.

How can I add events to the schedule with the data from the cursor?

View 1 Replies View Related

Android :: Implementing Filterable Cursor Adapter - How To Invoke/refresh Filter

Jun 15, 2010

I've overriden runQueryOnBackgroundThread and done what I've needed to do for the corrent query to be excuted with a given constraint. My current challenge is figuring out how to actually pass in the constraint. I've got an ActivityList which I'd like to filter on a stored preference. I'm thinking I will need to perform a filter during onStart such that the most recent preference changes are picked up. All that is in place, just not clicking on how I'd actually cause the filter to happen!

View 2 Replies View Related

Android :: Contents Of List View - Using A Cursor Adapter - Are Not Updated Refreshed

Aug 26, 2010

I have a list which shows data from a database using a cursor adapter. Using Menu option I am updating my database (inserting more rows deleting existing rows). When Menu operation completes, I want contents of list should show updated contents.

I have tried using cursor.requery(); (or explicitly querying cursor again) and using adapter.notifydatasetchanged(), but with this list of contents are not updated.

How can I refresh the contents of the list.

View 2 Replies View Related

Android :: Simple Cursor Adapter - List View - Binded To XML Document With Three Text Views

Mar 18, 2009

I have table with 3 columns which is binded to an XML document with three text views.

CODE:........

Depending on the value store in the third column, I want to change the text color in R.id.c. How should, I go about with this.

This is what I have so far :

COD:...............

View 3 Replies View Related

Android :: ListActivity Design / Changing Content Of List Adapter

May 31, 2010

I would like to write a rather simple content application which displays a list of textual items (along with a small pic).I have a standard menu in which each menu item represents a different category of textual items (news, sports, leisure etc.).Pressing a menu item will display a list of textual items of this category.Now, having a separate ListActivity for each category seems like an overkill (or does it?)
Naturally, it makes much more sense to use one ListActivity and replace the data of its adapter when each category is loaded.My concern is when "back" is pressed. The adapter is loaded with items of the current category and now I need to display list of the previous category (and enable clicking on list items too)
Since I have only one activity - I thought of backup and load mechanism in onPause() and onResume() functions as well as making some distinction whether these function are invoked as a result of a "new" event (menu item selected) or by a "back" press.This seems very cumbersome for such a trivial usage.Am I missing something here?

View 1 Replies View Related

Android :: Need To Have Complex ListView Adapter

May 18, 2009

I have ListActivity to show a custom list. The adapter for this list is a complex layout only known for each row at runtime depending on data gathered in a previous activity. The question I have is simple. I know it takes 4-6 seconds to prepare the adapter for the rows that will be visible (first 10), however I would like to let the user know by means of the empty list functionality or otherwise. At present the ListActivity is launched via a button on a previous activity and when that button is clicked the new activity will not be loaded until the adapter is completed, and the user is stuck with the previous activity until this happens. Code...

View 5 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved