Android :: Custom List Cursor Adaptor Crashes At BindView On Emulator - Not On Phone
Aug 23, 2010
I will try to be specific if I can - please be patient, first time asker and relatively new to programming on this platform. Apologies if this has been asked/answered before - please link it to me. I have searched up and down but find other unrelated (to me at least) problems.
The real puzzler for me is that my app is crashing on my emulator but when installed on my phone (via upload of apk to phone and then using an AppInstaller app from market) it works.
The crash comes from a NullPointerException at the numbered line in the following code snippet (my code) of a custom list cursor adapter.
CODE:....................
The following error dump is created.
CODE:..............
Curiously I have been happily programming and debugging away all day and out of the blue a long working and bug free portion of my app now throws up this error.
I suspect it might be a problem with the databases, but really not sure - nothing seems out of place there. Up until today I had a database with only one table - today I added a new table which also has a "_id" field as the name autoincrement key field, which I read in the docs was required for android list adapters (if memory serves). Having some experience in coding and some minor experience with databases, that seems like a bad idea to me but I am uncertain of if that is the problem and/or how else to do it.
The crash I am listing here does not display or make reference to the data in the other, new table. The cursor does not contain any query data from it. In fact if I rename the key field "_id" of the new table to something else (ie "_blah"), the crash remains.
Like I said, if I upload the apk to my phone, it works.
I have tried the following on the emulator:
- restarting adb (and eclipse) - no result
- uninstall from emulator - no result
- destory AVD profile and recreate - no result
I am developing this under the Android 2.1 SDK, and have been for the last few weeks. I have only ever had that SDK installed, I am yet to update to 2.2.
Not sure what else I can say here - hoping somebody here has experience enough to shed some light on it.
Without a fix to this, I can anticipate a very slow development process here on out (assuming I have to upload to my phone to test new code changes...).
View 3 Replies
Aug 20, 2010
I'm watching this video http://www.youtube.com/watch?v=N6YdwzAvwOA and Romain Guy is showing how to make more efficient UI adapter code using the getView() method. Does this apply to CursorAdapters as well? I'm currently using bindView() and newView() for my custom cursor adapters. Should I be using getView instead?
View 1 Replies
View Related
Jun 28, 2010
We are exploring the default applications in Froyo and we found out that the Camera app always crashes seconds after it loads.
Is this related to the no camera/video input limitation of the application? If not, what seems to be the problem? We already added all the additional properties to the AVD. We also disabled the auto-rotate screen option.
View 2 Replies
View Related
Mar 29, 2010
I have a simple app that I am building to get the hang of android's development environment - and things like click events, etc..
The app loads, and I am able to change the text in a textfield using a button handler. However, when I import the location class, and try to do a simple GPS call, the application crashes.
The problem is, everything looks good in Eclipse (error console) - and I'm not seeing any exceptions in the android emulator (DevTools). I have the logcat window open, but I haven't done anything in eclipse/code to send logcat anything (do I need to?)
Is there a better way to troubleshoot?
CODE:........................
View 2 Replies
View Related
Oct 18, 2009
I am using the Android Emulator to debug my application, first off it is ridiculously slow, I mean like 15mins to load slow and on top of it, my Alarm Clock application fails?Am I the only one, or do other people experience this? Is there a fix or will I just have to go cook steaks while the emulator is booting?
View 3 Replies
View Related
Sep 23, 2010
Is it possible to populate a listview based on a row Id from a custom cursor adapter. I keep getting an error "illegalArguementException column: _id does not exist". but the database has it and is already being used correctly. I don't know what to do, because I would need to populate different listviews from the same database and i don't want to have to create multiple database which will still have the same column names code...
View 1 Replies
View Related
Jul 28, 2010
I supply a cursor to a ListActivity like this: My question is how/when should I close my cursor when I am done? Cursor cursor = get ContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
mCursorAdapter = new CursorAdapter(this, cursor);
setListAdapter(mCursorAdapter);
View 1 Replies
View Related
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
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
Oct 12, 2010
I'm experimenting with the Android platform, and I'm beginning to love it, but right now I'm stuck, at this cursor/list adapter problem-thing.
The thing is, that I request a function, returning a data object, with several properties I'd like to map to different TextView's.
My list_item.xml
CODE:...........
So what I would like to do is: Map a property of an array of objects to several fields in the file.
View 1 Replies
View Related
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_PACKAGE)));
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
Nov 5, 2009
I am making an app where I need to filter the contacts as user types.. I m using autoTextView and I am able to successfully query the contacts db for either tel number or name.. However while displaying I can either display name or tel number only as simple cursor only lets me match one list view with one column.. How do I merge the name and tel number column of the cursor so that both of them can be shown in one list view.
View 2 Replies
View Related
Aug 30, 2009
How can I create a list Array (the list display First Alphabet when scroll) with the cursor data?
View 1 Replies
View Related
Apr 15, 2010
When I put the setContentView in thread as below, it crashes while running in emulator. code...
View 2 Replies
View Related
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
Sep 7, 2010
I have a cursor adapter and the logcat is filled with above errors, as soon as I click on a view. I am already releasing the CursorAdapter's cursor in onDestroy().Is there any way to get information about when the cursor was opened?
View 3 Replies
View Related
Feb 14, 2010
I think I've tried everything(made focusable:false!!) and I cant capture in anyway the selected checkbox on my list item. Even OnItemClickListener, doesn't respond to any click. How can I retrieve checked checkboxes in my list item? My list item included: image view, 4 textviews and the checkbox. Some code:
this is in my ListActivity class:
final String columns[] = new String[] { MyUsers.User._ID, MyUsers.User.MSG, MyUsers.User.LOCATION }; int[] to = new int[] { R.id.toptext, R.id.bottomtext,R.id.ChkBox, R.id.Location}; Uri myUri = Uri.parse("content://com.idan.datastorageprovider/users"); Cursor cursor = getContentResolver().query(myUri, columns, null, null, null); startManagingCursor(cursor); ListCursorAdapter myCursorAdapter=new ListCursorAdapter(this, R.layout.listitem, cursor, columns, to); this.setListAdapter(myCursorAdapter);
And this is my Custom Cursor adapter class:
public class ListCursorAdapter extends SimpleCursorAdapter { private Context context; private int layout; public ListCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); this.context = context; this.layout = layout;
} @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { Cursor c = getCursor(); final LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(layout, parent, false); return v;
} @Override public void bindView(View v, Context context, Cursor c) { TextView topText = (TextView) v.findViewById(R.id.toptext); if (topText != null) { topText.setText("");
} int nameCol = c.getColumnIndex(MyUsers.User.MSG); String name = c.getString(nameCol); TextView buttomTxt = (TextView) v.findViewById(R.id.bottomtext); if (buttomTxt != null) { buttomTxt.setText("Message: "+name); } nameCol = c.getColumnIndex(MyUsers.User.LOCATION);
name = c.getString(nameCol); TextView location = (TextView) v.findViewById(R.id.Location);
if (locationLinkTxt != null) { locationLinkTxt.setText(name);
}
I've tried many ways. many listeners, can't figure how to capture listener to my checkboxes. The data I am binding to the list items from the database, isn't concerned about the checkbox.. only the textviews. There isn't any connection between the database and the checkbox I have in the list's item.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="100sp" android:focusable="false" android:focusableInTouchMode="false"> android:padding="6dip">
<ImageView android:layout_width="wrap_content"
android:layout_height="fill_parent" android:src="@drawable/icon"
android:id="@drawable/icon" android:layout_marginLeft="6dip"
android:focusable="false" android:focusableInTouchMode="false">
</ImageView> <LinearLayout android:id="@+id/LinearLayout01"
android:orientation="vertical" android:layout_width="1sp"
android:layout_height="fill_parent" android:layout_weight="1"
android:focusable="false" android:focusableInTouchMode="false">
<TextView android:id="@+id/toptext" android:layout_weight="1"
android:gravity="center_vertical" android:text="OrderNum"
android:singleLine="true" android:layout_height="0dp"
android:layout_width="wrap_content" android:focusable="false"
android:focusableInTouchMode="false">
</TextView> <TextView android:id="@+id/bottomtext" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:focusable="false"
android:focusableInTouchMode="false" android:text="TweetMsg">
</TextView> <TextView android:id="@+id/twittLocation"
android:layout_weight="1" android:text="location" android:singleLine="true"
android:layout_width="fill_parent" android:layout_height="0dip"
android:focusable="false" android:focusableInTouchMode="false">
</TextView> <TextView android:layout_weight="1" android:id="@+id/twittLocationlink"
android:text="locationlink" android:gravity="fill_horizontal"
android:layout_width="fill_parent" android:layout_height="0dip"
android:focusable="false" android:focusableInTouchMode="false">
</TextView> </LinearLayout>
<CheckBox android:id="@+id/deleteTwittChkBox" android:text="Delete"
android:layout_width="wrap_content" android:layout_marginRight="2dp"
android:focusable="false" android:checked="false"
android:focusableInTouchMode="false" android:layout_height="fill_parent"></CheckBox>
View 4 Replies
View Related
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
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
Sep 5, 2010
I have tried adding a grid view to a custom dialog. When displaying the dialog it crashes. But when tried displaying the grid view in normal activity it was working.( without dialog )
I took the examples from developer android website.Took grid view and tried to integrate in custom dialog.
I used two xml main.xml & category.xml. Here is my code...
View 2 Replies
View Related
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
Mar 23, 2010
Data being pulled from a local DB, then mapped using a cursor. Custom Adapter displays data similar to a ListView. As items are added/deleted from the DB, the adapter is supposed to refresh. The solution attempted below crashes the application at launch.
CODE:................
Errors:
CODE:.........................
View 3 Replies
View Related
Nov 3, 2010
I am on Android 2.1 and I have one multi column Custom listview Using BaseAdapter with an editable edittext at the end of the listview. If the data in the listview do not contain the data of user choice then user should be able to enter data. If the data is already there in the list user will be able to select the data using custom selector. If a selection is made in the list view and user wanted to enter data in the text field at the bottom after selection then the marker in the list view should be unselected. I tried to use onclick() method on edit text using click listener. First time when it is clicked, edit text is getting focus and onclick() method is not fired. And when it is clicked second time, onclick() method is fired and notifyDataSetChanged() method is called. I tried to call the notifyDataSetChanged() method from the Focus Listener, list view selection is gone in my first attempt and edit text is not receiving any data input from the keyboard (frozen).
View 1 Replies
View Related
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
Mar 21, 2010
I get records from the system by quering a ContentResolver. I maintain the order of the items in the database. So I want to display the items in the order taken from my database.
How do I merge these two informations?
I am looking after an alternative way now. As what I ideally want is:
Get order of contacts by a custom order held in my database (this involves joining CR with my DB cursor, and doing an order by, later seams it's not possible with CursorJoiner) but there is more, if the join is not unique I want to sort by contact's name as last measure
Which is impossible using Cursor and Joiners, because of the missing feature of order bys, also I need to return a Cursor, as I will be using the in an ExpandableList
Also this translated to TSQL it would look like
select * from contactsdata
left join category on contactsdata.catid=category.id
order by category.pos asc, contact.display_name asc
So I am looking now after an alternative. I have in mind to load in a temporary DB table all data from CR, then do the query on the temporary table where I can join tables and do order bys? How does this sound to you?
View 1 Replies
View Related
Oct 22, 2009
I have a problem with bindView() that has me puzzled. I am using it to customize each row, including setting icons, coloring the background and setting up listeners for buttons. It mostly works as expected, but not quite.
When I fill the ListView with SimpleCursorAdapter, I get multiple calls to bindView() for position 0, but only 1 call for the other rows. The problem is that when all is said and done, I have 2 rows (LinearLayout) created for position 0. Here is a sample log extract:
CODE:........
I use a view holder class to hold the view, position and other data so that when a button is clicked, I can retrieve the holder with view.getParent.getTag(). This all works fine. The problem is that there are two views for position 0, but it's the first one in the above logcat that seems to be displayed. My code which acts on the rows when a button is clicked (especially setting background color) does not reliably hit the position 0 row that is actually displayed.
I can see what's happening but I am at a loss about what to do about it. Why are two view created for position 0? Is it something that I can control? How? If not, how should I deal with it so that the results when I modify the views are predictable?
View 5 Replies
View Related
Feb 7, 2009
In all the examples I've found to manipulate each view in a ListView, the method always seems to be getView(). But these were never Adapters backed by a cursor. I decided to try bindView() within a SimpleCursorAdapter, and so far it works very nicely, especially with the cursor all set up for my use.
My question is, is this usage good practice, and could I run into a problem in future? My question may be dumb but I just couldn't find a good example code snippet that uses a cursor.
View 2 Replies
View Related
Mar 19, 2010
The problem is as follows: - My app is deriving from TabActivity that has 3 tabs - Each tab has a ListView - Tab1 is populated by an adapter that inherit SimpleCursorAdapter and overrided the bindView() method. This tab is displaying correctly. - Tab 2 is also populated by another adatper that inherit SimpleCursorAdapter and overrided the bindView() method. For some reason that I don't understand, the overrided bindView() is not being called. Thus the tab is not displaying correctly.
Here's my code fragment:
CODE:...........................
View 3 Replies
View Related
Oct 3, 2010
I am using setViewValue method of ShowViewBinder to access image inside row of listView. The idea is to load image from internet and display it inside row of listView.
To load image, I am starting new image loader thread, but what I discovered when debugging this code, for each row I am actually starting 3 or 4 threads. I don't understand why. The code in if (columnIndex == ...) is executing more than once.
My code goes something like this:
CODE:...................
View 3 Replies
View Related
Oct 4, 2010
I was using some of the code from DeskClock and found that when I tried to modify the CursorAdapter that newView was getting called for each item. (I actually wanted to add a divider and it seems like adding the dividers separately is better than adding them into a single listView)
If I have 3 items I get the following behavior:
CODE:.............
I would've expected newView/bindView to be called once per cursor item. But, that doesn't seem to be the case. This was kind of a problem for me because I wanted to select the appropriate view depending on the cursor data, but since bindView could be called before newView that doesn't work.
Is this some odd recycler behavior (or somehow normal/expected)? Or is there something broken with the code (I removed everything except the ListView and it's still doing this)? I'm not quite sure why you would try to bind views that haven't been created, and why newView gets called on the first item twice.
If someone has an easy way of adding dividers to ListViews I'd love to know. I was going to try to dig through the contacts example to see how they did it there if not.
In case anyone's wondering MergeAdapter was neat to mess around with and try (I'll use it in some other situations). But, I did just end up writing a single adapter that handles multiple views. It computes the type of each item (which is small), stores it in a map, initializes it at adapter creation, and updates it in notifyDataSetChanged.
Then you just need to have getViewTypeCount() return the number of possible views. And getItemViewType to return the type from the map (which is 0 based, so 0-getViewTypeCount()). If you can compute your type from the position you don't need the map, but doing this on the fly wasn't possible so I just pre/recompute when needed.
View 1 Replies
View Related