Android :: ListAdapter - Cursor - Custom Layout?
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
Oct 13, 2010
Android has ListView component which is quite nice. The problem is that I created my own adapter to supply viewitems for each item displayed and I don't get anymore: Background color change when i scroll the items using up/down arrows. Background color change when I select an item. How do I do that?
View 1 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
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
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
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
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
Jul 9, 2010
I have created a simple class named Panel which extends the SurfaceView class and does some drawing in the onDraw method. When I use it from the code it works fine. For example this works as expected:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new Panel(this)); ....
However when I try adding this component from an xml layout the program crashes:
XML file (main.xml):
<?xml version="1.0" encoding="utf-8"?> <org.anddev.Panel android:id="@+id/panel" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"/>
Code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);....
Error msg: Sorry!
The application Test (process org.anddev) has stopped unexpectedly. Pleas try again.
I can not figure out why the same class works when created in one way and doesn't work when created in another.
View 3 Replies
View Related
Feb 25, 2010
Is it possible to create a button with a custom xml layout? Now I want to use this on a button. Anyone know how I can do this? I was thinking if I had Button.java file that extended Button. And then setView( R. layout. mylayout.xml); but that was to easy, and it clearly not working
View 1 Replies
View Related
Nov 28, 2009
Currently, I am creating a custom View class (DrawView) that inherits the View class and adding to my activity programatically by using RelativeLayout and LaoutParams etc. But is there an easier way to do this by adding my DrawView to the layout XML file?
View 4 Replies
View Related
Jun 23, 2009
I've created a custom view via .xml file, and I wanted to add it as a a contentView to an alert Dialog usinf a dialogBuilder:
CODE:.................
The problem is...I can't get my view from my custom layout... I only have an id (int)...
I tried Resource.getLayout(int) => it returns an xmlParser... not very usefull ...
finally the solution I comes up is so disgusting ( it worked but ... let's have a look)
CODE:.......
How can I do that easily without using such a disgusting way... ?
View 2 Replies
View Related
Mar 9, 2010
I am trying to do is to embed a custom view in the default layout main.xml:
CODE:......
As you can see the class is called com.lam.customview.CustomDisplayView, with the id of custom_display_view1. now in the com.lam.customview.CustomDisplayView class, i want to use another layout called custom_display_view.xml because i don't want to programmatically create controls/widgets.
Custom_display_view.xml is just a button and an image, the content of which i want to change based on certain conditions:
CODE:..............
I tried to do:
1)
CODE:........
But got this error, "03-08 20:33:15.711: ERROR/onCreate(10879): Binary XML file line #8: Error inflating class java.lang.reflect.Constructor ".
2)
CODE:..........
But got this error, "03-08 20:28:47.401: ERROR/CustomDisplayView(10806): Resource ID #0x7f050002 type #0x12 is not valid "
Also, if i do it this way, as someone has suggested, it's not clear to me how the custom_display_view.xml is associated with the custom view class.
View 2 Replies
View Related
Jul 15, 2010
I've created my own view by creating a subclass of the SurfaceView class.
However I can't figure out how to add it from the xml layout file.
My current main.xml looks like this:
CODE:............
What have I missed?
My view looks like this
CODE:..............
And it works fine like this:
CODE:..................
But nothing happens when trying to use it from the xml.
View 1 Replies
View Related
Aug 16, 2010
I have a dialog with a custom layout, and I try to close it when I press a button:
private void showAboutDialog() {
dialog = new Dialog(MainMenu.this);
dialog.setContentView(R.layout.about_dialog);
dialog.setCancelable(true);
dialog.setTitle(R.string.about_title);
dialog.show();
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.about_dialog, (ViewGroup) findViewById(R.id.layout_root));
Button closeButton = (Button) layout.findViewById(R.id.about_close_button);
closeButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View view) { dialog.dismiss();
} } );
}
But it doesn't work.
View 1 Replies
View Related
Apr 29, 2010
The button doesn't show in this layout(code below),image and textview are shown. I tried using relative layout but that doesn't help either.
I'm testing it on 1.5 emulator.
CODE:..........................
View 1 Replies
View Related
Jul 26, 2010
I have a custom layout that draws a transparent rounded rectangle beneath its children. The problem is when I try to add it to my xml file, it doesn't show up. Also, when I try to add parameters to it (i.e. android:layout_width) the popup shows that none of them are available. The same thing happens to any child views I add. public class RoundRectLayout extends LinearLayout
{ private RectF shape;public RoundRectLayout(Context context)
{super(context);
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.settings, this);
shape = new RectF();
}public RoundRectLayout(Context context, AttributeSet attrs)
{ super(context, attrs);
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.settings, this);
shape = new RectF();
} @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{shape = new RectF(0, 0, w - 5, h - 5);
super.onSizeChanged(w, h, oldw, oldh);
}@Override
protected void dispatchDraw(Canvas canvas)
Paint temp = new Paint();
temp.setAlpha(125);
canvas.drawRoundRect(shape, 10f, 10f, temp);
super.dispatchDraw(canvas);
View 2 Replies
View Related
Jun 13, 2010
I am having trouble getting my layout to give me result I need, I already tried many options and it seems that I'm doing something wrong or completely missing something.
I have a listview with a custom row layout I can't seem to working although it shouldn't be complex. I need of the list row to insist of:
Icon -- title text (bigger and bold) with a short multi line text under the title -- ImageButton
My problem in most of my tests is the icon to the right usually doesn't appear, I guess my center group grows and takes all the space of the button. My last failed attempt was with a Relative Layout, didn't have too much luck with a Linear Layout either.
Here is the row XML:
CODE:.........................
View 2 Replies
View Related
Aug 6, 2010
I am running a sqlite query and binding the returned data to a ListAdapter.
I have used the following example
ListActivity | Android Developers
However, having defined a seperate layout for the rows I cannot change the typeface for textview text1 to a custom one from assets
Here is the row layout
CODE:................
Here is the code from the andriod tutorial
CODE:............
We'll define a custom screen layout here (the one shown above), but typically, you could just use the standard ListActivity layout. setContentView(R.layout.custom_list_activity_view) ;
Query for all people contacts using the Contacts.People convenience class. Put a managed wrapper around the retrieved cursor so we don't have to worry about requerying or closing it as the activity changes state.
CODE:................
Now create a new list adapter bound to the cursor. SimpleListAdapter is designed for binding to a Cursor.
CODE:................
Specify the row template to use (here, two columns bound to the two retrieved cursor rows). mCursor, // Pass in the cursor to bind tonew String[]{People.NAME, People.COMPANY}, // Array of cursor columns to bind to. new int[] {android.R.id.text1, android.R.id.text2}); // Parallel array of which template objects to bind to those columns.
CODE:................
View 2 Replies
View Related
Aug 8, 2010
I have created a custom list item layout just like in this article http://developer.android.com/resources/articles/layout-tricks-efficie....
Each list item has icon, title and summary.
I would like to declare an xml resource that would provide data for that list. Just like you use <string-array> to populate the list using ArrayAdapter<String>.
The simple ArrayAdapter<String> can be populated from:
CODE:..........
I need each <item> to have icon, title and summary. Somewhat similar to:
CODE:..........
I would use <menu> but menu doesn't have summary if I'm not mistaken.
View 10 Replies
View Related
Jul 29, 2010
I am trying to refer to a custom View in the helloWorld XML layout but I get the following exception:
Error inflating class acme.my.MyTextView.
However, I am able to instantiate the view and add it to the main content view manually. The custom View is built from it's own XML layout. How do I get this to work?
CODE:....................
View 1 Replies
View Related
May 21, 2010
How to I tell my own custom Spinner Layout to use my Theme? code...
View 2 Replies
View Related
Aug 13, 2010
Im creating a custom layout and I want to use the text declared in the layout.xml file in my layout.
Like when I create a TextView in XML and set android:text=@string/text1 when I run the app text view automatically loads the text from android:text. So how can I access attributes declared in the layout XML file in my custom component.
View 2 Replies
View Related
Aug 9, 2010
I understand how to create a custom Android control, and I believe I understand how to pull attributes for it from the Xml layout. I don't know, however, how to get any children elements from it. Here's a visual example of what I'm trying to accomplish: public class Menu extends LinearLayout. When my Menu is created, how do I get references to the two MenuItems. Code...
View 2 Replies
View Related
Aug 6, 2010
I have defined custom views in the various layout .xml files. However, all the layouts are using the Linear Layout - put the content would vary.
I would like to create my own widget tag something like <com.mypackage.MyLinearLayout />, I would like to pass the layout as a param to the <com.mypackage.MyLinearLayout layout="@layout/simple.xml" />
How to define new attributes to the custom widgets ? Simply defining a getter/setter method would work or is there any other references.
View 2 Replies
View Related
May 31, 2010
I have a set of custom views that I would like to add to a LinearLayout object. However, the first object I add to the layout (I do this dynamically, during runtime) has a OnMeasure method that tries to get as much space as possible resulting in that it get's all the space LinearLayout object. This is correct behavior, but when I then add more objects following that I want the allocated area for the first object to decrease so the others will fit. As it is now, each following object will get zero space, and hence won't be visible.
View 4 Replies
View Related
Feb 9, 2010
I have a linear layout that I have overridden because I want to > dynamically add other views to it. I am trying to add some textviews > to it and I call addViewToLayout in the onLayout method. Can't you just add your views to the layout using addView()? I have one custom LinearLayout and this is what I do and it works fine. No need to override onLayout() or onDraw(). Maybe try that
View 10 Replies
View Related