Android :: Custom View Using Adapter Iface
Jan 31, 2009
I want to create custom View showing possibly several items. i think using Adapter interface would be good idea.
My question is: should i extend AdapterView? if so, what is the most imortant when doing this (e.g. AdapterView is ViewGroup, so how should i manage children)?
View 6 Replies
Dec 7, 2009
I have implemented a custom adapter the extends from the BaseAdapter and implements the getView method. It works fine except for one thing, not once do I get the convert View (a parameter to the getView method) that is not null (that can be reused).
View 2 Replies
View Related
Mar 25, 2010
I have a ListView with a custom Adapter that extends ArrayAdapter. It's ArrayAdapter of Type Artist. (There are about 1200 artists in my list). Artist is a very small class that has a name and an id. The Artist Class has toString() overridden to return just the name. I have an EditText. The EditText has an TextChangeListener where I call .getFilter().filter(chars, callback) on my adapter. In the Filter.Filterlistener().onComplete() callback i print the count and it looks really good. As i type the count decreases. So it seams everything works as advertised, but the List stays the same. I tried to call artistAdapter.notifyDataSetChanged() to force the list to redraw, but nothing happens. [see 2.)]. I am tinkering around for days now! I am desperate. Hopefully someone can have a look on my code and tell me what I am doing wrong! How can I force the list to be redrawn?
Here is what I have done:
1.) Defined a ListView and an EditText like this:
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_search_text"
android:layout_width="fill_parent"
android:layout_height="35dip"
android:layout_below="@id/header">
</EditText>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_search"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ListView>
2.) Setup my ListView in the Activities onCreate():
private ListView listView = null;
private ArtistAdapter artistAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_artists);
artistAdapter = new ArtistAdapter(this, R.layout.row, list); // 'list' is an ArrayList<Artist>
listView = (ListView) findViewById(R.id.list_search);
listView.setAdapter(artistAdapter);
listView.setFastScrollEnabled(true);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int position, long id) {
// do something } });
EditText txtSearch = (EditText) findViewById(R.id.list_search_text); txtSearch.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable arg0) { }
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
public void onTextChanged(CharSequence chars, int start, int before, int count) {
artistAdapter.getFilter().filter(chars, new Filter.FilterListener() {
public void onFilterComplete(int count) {
Log.d(Config.LOG_TAG, "filter complete! count: " + count);
artistAdapter.notifyDataSetChanged();
}});
}});
}
3.) This is my ArtistAdapter in short. I added an remove() and add() method:
public class ArtistAdapter extends ArrayAdapter<Artist> implements SectionIndexer {
private List<Artist> items;
/* other stuff like overridden getView, getPositionForSection,
getSectionForPosition and so on */
@Override
public void remove(Artist object) {
super.remove(object);
items.remove(object);
}
@Override
public void add(Artist object) {
super.add(object);
items.add(object);
} }
4.) My artist has also the toString() overridden:
public class Artist implements Comparable<Artist> {
public String uid;
public String name;
public Artist(String id, String name) {
this.uid = id;
this.name = name; }
public int compareTo(Artist another) {
return this.name.compareToIgnoreCase(another.name);
}
@Override
public String toString() {
return this.name;
} }
View 5 Replies
View Related
Jun 2, 2009
I developed a List View with a custom adapter (which extends Array Adapter). The problem is that i can't selected or highlighted items. Is there a attribute to fix in the list View Layout or something else?
View 22 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
Oct 28, 2010
I'm have a custom GridView Array Adapter. The problem for me is that when the grid list gets large enough to scroll off the screen the gridview and arraylist get out of sync. For instance in my case I have code that checks if an actor is of type director the text color should be red. if you scroll up and down my list enough times all the actors text in my gridview will become red. The thing is that the Gridview appearance actually looks fine its the backing data. Here is the complete class. In the code you can see where I tried to override getItem and getItemId but that didn't fix anything. Code...
View 6 Replies
View Related
Jun 18, 2010
I have seen examples implementing a custom Filter. The Android developer docs talk about implementing a Filterable interface. Does anyone have any advice and/or sample code on the best way to implement filtering in a ListView ?
View 2 Replies
View Related
Jan 31, 2010
How do I set row height if text of some rows more than one line when writing custom ArrayAdapter?
View 4 Replies
View Related
Feb 25, 2010
I have a custom adapter for an arraylist.
CODE:...........
But when i try to access to the progress bar in the adapter
CODE:............
It always return null, like it doesn't find the progress bar. However, the progress bar is shown in the list, but i need to access to it inside the adapter.
View 1 Replies
View Related
Jun 7, 2010
I seem to be having trouble with the linkify I am using in my Custom Adapter. For some reason I recieve the following stack track when I click on one of the links:
CODE:......
Here is the code that is calling it:
CODE:.......
I understand what the error is saying but I am not sure how to fix it.
View 1 Replies
View Related
Apr 28, 2010
I am trying to create a list view which as TextView that can display html content , an WebView and other basic TextViews.I tried to extend SimpleAdapter but i struck with the problem ,I will be glad if someone can point out the mistake i am doing.
In onCreate method:
CODE:.............
And my row.xml file looks like:
CODE:.............
The error i was getting was:
CODE:..................................
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
Aug 4, 2010
I have a listview with a custom arrayadapter that handles about 15 strings. The style of each row alternates (between labels and values for those labels--for example row 1 could be "email address" and row 2 would be the actual email address). I'm changing the style of each row to alternate like this in the arrayadapter's getView() method. So if the item at the current position is a label, I'll change the styling from the default row style (which is what the values have applied to them). When the listview first loads, the styling is perfect and just how I want it to be. If I scroll the list slowly up or down, it stays that way. However, if I scroll the list fast up and down, the styling of the value rows starts changing to that of the label ones until all of the rows have the styling of a label row. I've used custom adapters on other listviews in the app with no problems like this. Found out that it also changes all of the rows to the label styling on portrait->landscape orientation changes. Doesn't do this on landscape->portrait changes. Below is the adapter I'm using.
public class DetailsAdapter extends ArrayAdapter<String> { private TextView text = null; private String item = null;
public DetailsAdapter(Context context, int resource, int textViewResourceId, String[] objects) { super(context, resource, textViewResourceId, objects);
} @Override public View getView(int position, View convertView, ViewGroup parent) { text = (TextView) super.getView(position, convertView, parent); item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) { text.setBackgroundColor(0xFF575757); text.setTextSize(15);
text.setTypeface(null, Typeface.BOLD); text.setPadding(8, 5, 0, 5);
} else { text.setPadding(15, 15, 0, 15); } return text;
} @Override public boolean isEnabled(int position) { item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) { return false;
} else { return true; } } }
View 1 Replies
View Related
Jul 1, 2010
I'm making a custom adapter so that I can display a list of items with icons which looks like the menu that comes up when you long click the home screen. For some reason though the list items are not clickable. The can be navigated to with the D-pad but they cannot be clicked in any way. I thought maybe the problem was with the AlertDialog I was using so I replaced a working adapter I had elsewhere but I have the same issue there. My adapter looks like this:
ArrayList<IconListItem> mItems; LayoutInflater mInflater;
public IconListAdapter(Context context, ArrayList<IconListItem> items) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mItems = items;
} public IconListAdapter(Context context) {
this(context, new ArrayList<IconListItem>());
} public void add(IconListItem item) { mItems.add(item);
notifyDataSetChanged(); return item;
} public void remove(IconListItem item) { mItems.remove(item); notifyDataSetChanged();
} @Override public int getCount() { return mItems.size();
} @Override public IconListItem getItem(int position) { return mItems.get(position);
} @Override public long getItemId(int position) { return position;
} @Override public View getView(int position, View convertView, ViewGroup parent) { View view;
if(convertView == null){ view = mInflater.inflate(R.layout.two_line_icon_list_item, null);
} else { view = convertView; } IconListItem item = mItems.get(position);
TextView lineOne = (TextView) view.findViewById(R.id.firstLine);
TextView lineTwo = (TextView) view.findViewById(R.id.secondLine);
ImageView iconImage = (ImageView) view.findViewById(R.id.icon);
lineOne.setVisibility(View.VISIBLE); lineTwo.setVisibility(View.VISIBLE);
iconImage.setVisibility(View.VISIBLE); lineOne.setText(item.getText());
if (item.getSubtext() == null) lineTwo.setVisibility(View.GONE);
else lineTwo.setText(item.getSubtext());
if (item.getIcon() == null) iconImage.setVisibility(View.GONE);
else iconImage.setImageDrawable(item.getIcon());
return view; }
And the XML it's inflating:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="6dip" >
<ImageView android:id="@+id/icon" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_marginRight="6dip" />
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content"
android:layout_weight="1" android:layout_height="fill_parent" >
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1"android:gravity="center_vertical"
android:id="@+id/firstLine" android:ellipsize="marquee" android:inputType="text" />
<TextView android:layout_width="wrap_content" android:layout_height="0dip"
android:layout_weight="1" android:ellipsize="marquee"
android:id="@+id/secondLine" android:inputType="text" />
</LinearLayout> </LinearLayout>
When I say they are not clickable, I mean that they items do not highlight in orange when I press them nor does onItemClick ever get called. In my code I have this, a different adapter for another purpose and it works perfectly
this.foos= foos; fa = new FooAdapter(this.foos); fooList.setAdapter(fa);
// View the details for an item when it is selected
fooList.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent i = new Intent(MyActivity.this, MyOtherActivity.class);
i.putExtra("foo", ((fooAdapter)arg0.getAdapter()).getItem(arg2));
i.putExtra("list_position", arg2);
MyActivity.this.startActivityForResult(i, 0);
} } );
But when I swap out the first 3 lines for
IconListAdapter ila = new IconListAdapter(this);
ila.add(0, "Test 1", android.R.drawable.ic_menu_mylocation);
ila.add(0, "Test 2", android.R.drawable.ic_menu_edit);
ila.add(0, "Test 3", android.R.drawable.ic_menu_search);
groupList.setAdapter(ila);
I t stops working.
View 2 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
Nov 1, 2010
I have a listView using a custom adapter. Each row contains a button and some other Views. I want to be able to click either on the button, or on the row itself (to edit the item of the list that is clicked).
Setting an onItemClickListener in the activity won't work because of this problem
I think I have to set an onClickListener in the getView() method of my adapter for it to work properly.
I would like to use my activity's onClickListener, in order to use a startActivityForResult() when the row is clicked, in order to have something returned to my activity when the item edition activity is over.
How can I do that?
View 1 Replies
View Related
Sep 10, 2010
I have a custom list adapter contains a layout with controls in it. I was wondering how I can get each individual controls id? I am planning on changing the color of some textviews. code...
View 1 Replies
View Related
Jan 11, 2010
I have a Adapter View derived class (say GridLayout) in which I arrange views in a grid. When items in the grid exceed the height of the GridLayout( or screen) I want a scrollbar to appear. I have handled scrolling in onTouchEvent. But the problem is the scrollbars don't appear. I have set the vertical scrollbar to be enabled, but no use. The docs say the scrollbar appears every time the scrollTo or scrollBy methods are called.
View 2 Replies
View Related
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
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
Jul 15, 2010
I have a list and i want to check is the view is returned so i can call loadingAnimation.start() to make a imageview insite listview animate
Let me tell you what i mean.. code...
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
Jul 12, 2010
I am calling one webservice.Result of webservice I am storing in an Array list. Result of webservice I want to display as list view. For ListView I am using SimpleAdapter. and SimpleAdapter is something like this:- SimpleAdapter adapter = new SimpleAdapter(this,hashmap, layout, from, to);
I am not able to put array list into hashmap. Is there anyway to do this?
View 2 Replies
View Related
May 11, 2010
made a custom list adapter extending the Base adapter. Each item in the list has an imagebutton, 2 textviews and a button. I tried to add the context menu to the list so as to display some options for an item in the list. registerForContextMenu(getListView()); I used a MenuInflater object to inflate the context menu xml file. But on clicking the items in the list nothing shows up or the usual highlighting of the item of list on click isn't shown. Is it that the context menu doesn't work for custom list views? Any help would be much appreciated.
View 1 Replies
View Related
Jul 3, 2010
I'd like to make a list adapter that formats views like this:
I want to be able to fire a different onClick when the user clicks the image. I have defined the onClick on the image itself in the getView() override, but how do I then get the position of the line that was clicked so I can update the record in the database to record the action?
View 1 Replies
View Related
Oct 4, 2010
I am using a Gallery view where the view corresponding to each item is non-trivial and consists of text as well as multiple buttons. When I click to drag the gallery view (somewhere not on one of the buttons) the button's drawable state changes to pressed and appears as if all of the buttons are currently being pressed. Additionally, the same behavior happens for the selected state (e.g. all of the text of the child TextViews changes color). I am trying to prevent this behavior and have found the android:duplicateParentState xml attribute as well as the setDuplicateParentStateEnabled property. This seems like it should accomplish what I am trying to do, but it seems to have no effect.
View 1 Replies
View Related
Sep 13, 2010
When creating a custom account and/or sync adapter, raw_contacts that belong to your custom account can be created. But it looks like that they then cannot be edited with the Contact app! Is this a known limitation, or a problem in my code?
View 9 Replies
View Related
Nov 14, 2010
I have made customAdapter (which extends BaseAdapter). I want to reuse the old views..
So I am checking:
CODE:........................
View 4 Replies
View Related
Jul 12, 2010
Sample code there is a method getitem(position) in the class of image adapter which returns null for the sample example. However, this method is important and is supposed to return the corresponding data item of the image adapter. For example the image adapter could generate a series of customized image views by magically calling the getview method. How could we implement the getitem(position) method under this case to help us gain access to these customized image views?
View 2 Replies
View Related
Jul 23, 2009
Currently I am working on IM, and I am facing problem during implementations. I am implementing this messenger using XMPP client and using smack API for implementing all features like contacts list, online offline status, and chat also. Prblem which I am facing:
Its my list view where I am showing contacts list
public class ContactsList extends ListActivity implements OnClickListener{
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContactsManager manager = new ContactsManager(this); setListAdapter(manager);
} public class ContactsManager extends BaseAdapter{
private LayoutInflater mInflater; private Bitmap mainListIcons[];
private static ContactsInfo contactsInfo; public ContactsManager(Context context) {
mInflater = LayoutInflater.from(context); mainListIcons= new Bitmap[3];
mainListIcons[0] = BitmapFactory.decodeResource (context.getResources(), R.drawable.online);
mainListIcons[1] = BitmapFactory.decodeResource (context.getResources(), R.drawable.offline);
} @Override public int getCount() { return Global.contacts.size();//
contacts is vector where I am saving my contacts
} public Object getItem(int position) { return position;
} public long getItemId(int position) { return position;
} public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder; if (convertView == null) {
convertView = mInflater.inflate (R.layout.main_settings_lists_icon_text, null);
holder = new ViewHolder(); holder.mainListDisplayText = (TextView) convertView.findViewById(R.id.main_settings_lists_text);
holder.mainListDisplayIcon = (ImageView) convertView.findViewById(R.id.main_settings_lists_icon);
convertView.setTag(holder);}else{ holder = (ViewHolder) convertView.getTag();
} contactsInfo = (ContactsInfo)Global.contacts.elementAt (position);
String username = contactsInfo.getUsername(); String status = contactsInfo.getUserstatus();
if(status.equalsIgnoreCase("unavailable")) { older.mainListDisplayIcon.setImageBitmap(mainListIcons[1]);
}else{ holder.mainListDisplayIcon.setImageBitmap(mainListIcons[0]);
} holder.mainListDisplayText.setText(username); return convertView;
} static class ViewHolder { TextView mainListDisplayText;
ImageView mainListDisplayIcon;}
public class ContactsHandler implements RosterListener {
@Override public void entriesAdded(Collection<String> c) {
for(String s:c) { Log.i("ADDED Contacts",s);
} } @Override public void presenceChanged(Presence p) {
Log.i("PRESENCE",p.getFrom()); Log.i("IS Available",""+p.isAvailable());
Log.i("UserStatus",""+p.getStatus()); if(p.getFrom().contains("@") && p.isAvailable())
{ ChatManager chatmanager = Connection.getVopConnection getXMPPConnection().getChatManager();
Chat newChat = chatmanager.createChat("gulfam@imran-mehmood", new ChatHandler());
} } }
View 2 Replies
View Related