Android :: ListView Item From Custom Adapter Not Selectable

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.

Android :: ListView Item from Custom Adapter not Selectable


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 :: ListView Using Custom ArrayList Adapter - Implementing Custom Filter

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

Android :: Scroll ListView With Custom Adapter - Too Fast

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

Android :: ListView - Use The Activity OnClickListener From A Custom Adapter?

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

Android : Create A Split Button For A Custom ListView Adapter?

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

Android :: Custom ListView Selected Item Children?

Oct 27, 2010

I have a custom listview row that contains a number of textView components. Instead of the "standard" single text item, I have created a item where each listview row contains several bits of information. For this example, I have a record id, a name, and a description for each row in the listview. I have my listview populated via
this.mDbHelper = new RecordDBAdapter(this); this.mDbHelper.open();
Cursor c = this.mDbHelper.fetchAllRecords(); startManagingCursor(c);
String[] from = new String[] {RecordDBAdapter.ROW_ID, RecordDBAdapter.NAME,
RecordDBAdapter.DESCRIPTION};
int[] to = new int[] {R.id.recordId, R.id.lblName, R.id.lblDescription};
// Now create an array adapter and set it to display using our row
SimpleCursorAdapter records = new SimpleCursorAdapter(this, R.layout.record_row, c, from, to); this.list.setAdapter(dives);

Now what I want is to be able to access the recordId value within each clicked item. I've tried to follow the Android tutorials to no avail. They do something like
Object o = adapter.getItemAtPosition(position);
but that still doesn't help either. What I really want is to get the value of the recordId within each selected listItem. Does anyone know how this would be accomplished? Here is my onItemClick event:
protected OnItemClickListener onListItemClick = new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> adapter, View view, int position, long rowId) {
// My goal is either to grab the value of the
// recordId value from the textView, or from the adapter.
//Object o = adapter.getItemAtPosition(position);
//Tried this, no joy
Intent intent = new Intent(NeatActivity.this, SomeOtherActivity.class);
// intent.putExtra("selectedRecordId",val); //val here is a numerical record row id being passed to another activity.
startActivity(intent); } };

View 1 Replies View Related

Android :: ListView Item Background Via Custom Selector

Apr 1, 2010

Is it possible to apply a custom background to each Listview item via the list selector?

The default selector specifies @android:color/transparent for the state_focused="false" case, but changing this to some custom drawable doesn't affect items that aren't selected. Romain Guy seems to suggest in this answer that this is possible.

I'm currently achieving the same affect by using a custom background on each view and hiding it when the item is selected/focused/whatever so the selector is shown, but it'd be more elegant to have this all defined in one place.

For reference, this is the selector I'm using to try and get this working:

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

And this is how I'm setting the selector:

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

View 3 Replies View Related

Android :: Custom Separator In ListView Depening On Content Of Item

Oct 22, 2009

I've a ListView with items containing information about places with a rating and the distance to the current location.

The items are sorted into groups:

Group 1: within 500m
Group 2: 500m - 1km
Group 3: 1km - 1.5km

Withing these groups the items are sorted by their rating.Now I put out these items via my custom adapter (extension of BaseAdapter) into the ListView, which works perfectly.

However, what I'd like to do is to put a separator before the each first item of each group. This separator can be a TextView saying e.g. 500m - 1km followed by all the ListView items in that group. Any idea on how to realize this?

View 1 Replies View Related

Android :: OnClick() Event On An Item Of ListView Custom Row Layout

Nov 15, 2010

I have a ListView whose rows are formatted by me. Each row has a mix of ImageView and TextView. I have also implemented my own adapter and am able to draw each row through it.

Now, I would want something like this-

User clicks on an ImageView (not anywhere else on the row, but only this ImageView should respond to clicks)
I get to know the position of the row whose ImageView was clicked.

I have tried many things for this and have wanted my code to be as efficient as possible (in terms of overkill).
Currently i can capture the click event on that particular ImageView only, but I can't know which row was clicked.

I have provided an attribute in the Row XML like this-

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

And in my code, I have a method like this:

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

I can get the parent row (perhaps) but am not sure how to go further from here.

View 1 Replies View Related

Android :: Cannot Display Image Correctly Using Custom Item Layout In ListView

Apr 22, 2010

I am using a ListView to display my custom item layout, which may contain some TextViews and an ImageView.

This is the item layout I made (post_item.xml):

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

I don't put the ImageView initially in the xml layout, but I will insert it when I need to the FrameLayout programmatically (I also put another views in it when needed). So, there will be some items which has ImageView in it and which don't.

I get the image to fill the ImageView from the Internet (through URL), decode it as Bitmap, and keep it as a Bitmap variable in a class represents the custom item layout (class PostItem).

When the activity shows for the first time it looks fine, but as I scrolled through the items then a problem showed up, the items which shouldn't show any image show the image from the other item which should, although they don't have any ImageView (because I didn't insert it).

I am using SDK 1.6 and the emulator. Haven't tried it in real device because I don't have it.

Here is my code for the Adapter:

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

And this is the code to prepare the items:

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

Is this the bug in the emulator or there is some mistake in my code (probably memory problem for the Bitmap)?

View 1 Replies View Related

Android :: Two Selectable Items In Each List In ListView

Dec 16, 2009

The way I want it is, per row there will be a text and is followed by a right arrow button, so that the user can click on that button to edit the content of that row. If the user is using the keypad, by using the left and right buttons on the keypad, he should be able to select the textview or the Button in that particular row. I have seen this in a couple of apps. The way I see that working on those apps appear as if they are maintaining two lists in parallel.

The reason i felt it this way is, if I am on row 1 of the list and if I press the right key on the phone keypad, then the right arrow button will get highlighted and now if I use the down key or if I keep pressing the down key, then the focus will scroll through that arrow button only as if that is an another parallel list constructed. I don't know if that is a good way to do it. I tried many for getting this to work, but couldn't succeed.

View 4 Replies View Related

Android :: ListView Not Selectable Anymore In Row Layout?

Sep 1, 2010

When I use a ImageButton in the ListView row, the ros is no selectable. When I change it to a ImageView it is selectable. I have this simple row layout, and below is my list , am I missing something simple?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:orientation="horizontal" android:id="@+id/layoutrowtop">
<ImageButton android:id="@+id/imgDetailDisclosure"
android:layout_height="fill_parent" android:layout_width="48dip"
android:layout_gravity="center_vertical" android:background="#00000000">
</ImageButton>

<RelativeLayout android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"> <TextView android:id="@+id/firstLine"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:ellipsize="marquee" android:textStyle="bold"
android:textSize="18dp" android:singleLine="true"
android:gravity="top" > </TextView>

<TextView android:id="@+id/secondLine" android:layout_height="fill_parent"
android:layout_below="@+id/firstLine" android:layout_width="wrap_content"
android:ellipsize="marquee" android:textStyle="italic"
android:textSize="14dp" android:singleLine="false"
android:gravity="top" android:lines="2"> </TextView>
</RelativeLayout> </LinearLayout>

<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="fill_parent"> <EditText android:id="@+id/search_box"
android:layout_height="wrap_content" android:layout_weight="1"
android:layout_width="fill_parent" android:hint="type to filter" android:inputType="text"/>

<ImageButton android:id="@+id/search_button" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/icon_mag_glass"/>
</LinearLayout>
<!-- Set height to 0, and let the weight param expand it -->
<!-- Note the use of the default ID! This lets us use a ListActivity still! -->
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1" />

View 2 Replies View Related

Android :: How To Make Listview With Selectable Children Stop Scrolling On Touch Event

Oct 20, 2009

As a work around to the issue where a list item isn't focusable if it has a focusable child item (a comment by Romain Guy was that this was intended behavior, for accessibility reasons) I simply filled the listItem with two children, each of which is focusable - There's nowhere to directly touch on the listItem anymore, just it's children.

For the most part this is a useable workaround, effectively invisible to the user, except for one thing- Although you can scroll by swiping without issue, touching to *stop* the scroll no longer works- I imagine because the child item is capturing the touch event and not passing it to the parent listitem, at least while the scroll is in effect.

Is there a known workaround for this? Perhaps someway to "pass the baton" of the touch event back up to the parent listItem, or a way to change my design?

BTW- I know there's some built-in functonality for single/multiple choice listviews (checkbox listviews) - That doesn't actually help in my case. The app is a contact list, and the row children are a relativelayout (populated with contact info) and a clickable phone icon (a one-touch dial for the contact), which needs to be visible or invisible depending on whether the stored contact has a phone number.

View 2 Replies View Related

Android :: How To Get Selected Item From List Adapter?

Aug 28, 2009

How i get the Selected item from the list Adapter.In this above code if i selected March from the Dropdown Adapter means then how can i retrieve the Manth March to show in a textview.

View 5 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

Android :: ItermId To Position In A ListView/Adapter

Jan 7, 2010

In a ListView/CursorAdapter, it is easy to go from a position to an itemId

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

Is there any way to do the reverse mapping? From an itemId, get its position in the list?

View 2 Replies View Related

Android : ListView Adapter Illegal StateException

Mar 30, 2010

I've implemented a custom ListView and Adapter, and sometimes I receive IllegalStateException exception:" ERROR/AndroidRuntime(3575): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread."

Here is some code example: Code...

View 5 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 :: Way To Change ListView Style Droid Without Building Custom Listview ?

Jun 26, 2010

I would like to change text and back ground color of my Listview without building custom rows. Is this possible ?

View 1 Replies View Related

Adapter For ListView Causes App To Crash?

Aug 30, 2012

i've been trying to get this to work... but it isnt working.

there was no Exception to catch, the app just crash.

Code:
public class MainActivity extends Activity{
...
private void loadFromFile_populateListView(final String data){
[code].....

View 7 Replies View Related

Android :: ListView Animation Of Views Inside Adapter That Got Updated

Aug 29, 2010

Im using ListView to to show some custom data, once data is updated in the adapter i call notifyDatasetChanged(), so the view will get updated, all of this works well, my issue though is i would like to run an animation once only on items that got changed when the adapter was updated. currently i keep a copy of all the changed objects and i tried to animate the correct items through the getView() call.

However if i do it only once for every getView call then i see no animation most of the time on items that changed. if i continue to do so in successive getView calls i see animation on items that don not change as well and also the ones that changed get animated again and again.

Im guessing sometimes android calls the getView() for other reasons than showing the generated view immediately, and thats the reason it doesnt work if i do it once.

View 1 Replies View Related

Android :: How To Get ListView Item As Web

Sep 21, 2010

I've list view item as a object, I want to fetch item details as web to show.

View 2 Replies View Related

Android :: ListView - Each Item Having An ID?

Sep 6, 2010

I was curious if there was a way that I can assign each menu item in a ListView its ID from the SQLite database, so that when I do something like onClick, or using a ContextMenu, I can tell what item / row I am referencing to.

View 1 Replies View Related

Android :: Custom Adapter - How To Set Row Height?

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

Android :: Custom Adapter With Bar Progress

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

Android :: Linkify - Using In Custom Adapter?

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







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