make sure your list item does not contains focusable children (like
buttons, imageviews)
setting android:focusable="false" usually works for buttons and so
on...

On Jan 30, 2:42 pm, qmwestview <qmwestv...@googlemail.com> wrote:
> Hi,
>
> I have a working ListActivity class. Each of the list item consists of
> an ImageView and a TextView.
>
> However, when I try to replace the ImageView with ImageButton, The
> list becomes unselectable. The onListItemClick or any other function
> no longer get called when press a list item (Although the track ball
> can still focus a list item, but nothing more can be done).
>
> I have searched the forum and also the internet and failed to find any
> such working example, apart from one guy reporting a similar problem
> but with no answer.
>
> The following is my code:
>
> 1.      The list_item.xml:
>
> <?xml version="1.0" encoding="utf-8"?>
> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
> android"
>     android:layout_width="fill_parent"
>     android:layout_height="?android:attr/listPreferredItemHeight">
>
>     <ImageButton
>         android:id="@+id/refresh"
>
>         android:layout_width="wrap_content"
>         android:layout_height="fill_parent"
>         android:layout_alignParentTop="true"
>         android:layout_alignParentBottom="true"
>         android:src="@drawable/refresh" />
>     <TextView
>         android:id="@+id/title"
>         android:layout_width="fill_parent"
>         android:layout_height="fill_parent"
>                 android:layout_toRightOf="@id/refresh"
>         android:layout_alignParentBottom="true"
>         android:layout_alignParentRight="true"
>         android:singleLine="true"/>
> </RelativeLayout>
>
> 2.      the Main ListActivity class:
>
> import android.app.Dialog;
> import android.app.ListActivity;
> import android.content.Context;
> import android.os.Bundle;
> import android.util.Log;
> import android.view.KeyEvent;
> import android.view.LayoutInflater;
> import android.view.MenuItem;
> import android.view.View;
> import android.view.ViewGroup;
> import android.widget.BaseAdapter;
> import android.widget.Button;
> import android.widget.ImageButton;
> import android.widget.ImageView;
> import android.widget.ListView;
> import android.widget.TextView;
>
> public class TestListActivity extends ListActivity implements
> Constants {
>
>         @Override
>         public void onCreate(Bundle savedInstanceState) {
>                 super.onCreate(savedInstanceState);
>                 setListAdapter(new EfficientAdapter(this));
>         }
>
>         @Override
>         protected void onListItemClick(ListView l, View v, int index, long
> id) {
>                 Log.i("", "onListitemClick");
>         }
>
>         public boolean onContextItemSelected(MenuItem item) {
>                 Log.i("", "onContextItemSelected");
>                 return false;
>         }
>
>         private class EfficientAdapter extends BaseAdapter implements
> Constants {
>                 private LayoutInflater layoutInflater;
>
>                 Context ctx;
>                 public EfficientAdapter(Context context) {
>                         // Cache the LayoutInflate to avoid asking for a new 
> one each time.
>                         layoutInflater = LayoutInflater.from(context);
>                         ctx = context;
>                 }
>
>                 @Override
>                 public int getCount() {
>                         Log.i("", "getCount");
>                         return SIZE;
>                 }
>
>                 @Override
>                 public Object getItem(int position) {
>                         Log.i("", "getItem");
>                         return "TBD";         }
>
>                 @Override
>                 public long getItemId(int positin) {
>                         Log.i("", "getItemId");
>                         return positin;
>                 }
>
>                 public void update(int position) {
>                         notifyDataSetChanged(); // triggers the view data to 
> be refreshed!
>                 }
>
>                 /**
>                  * Make a view to hold each list item
>                  */
>                 @Override
>                 public View getView(int position, View convertView, ViewGroup
> parent) {
>                         Log.i("", "getView");
>                         ViewHolder holder;
>                         if (convertView == null) {
>                                 convertView = 
> this.layoutInflater.inflate(R.layout.list_item,
> parent, false);
>
>                                 holder = new ViewHolder();
>                                 holder.title = (TextView) 
> convertView.findViewById(R.id.title);
>                                 convertView.setTag(holder);
>                         } else {
>                                 holder = (ViewHolder) convertView.getTag();
>                         }
>
>                         holder.title.setText(R.string.title);
>                         parent.focusableViewAvailable(convertView); // 
> originally without
> this. Added for testing, still not working!
>                         return convertView;
>                 }
>
>                 private class ViewHolder {
>                         //ImageButton imageButton;
>                         TextView title;
>                 }
>         }
>
> }
>
> Is there any way to make ListActivity working with ImageButton or this
> actually can not be achieved (iPhone can this)?
>
> Any help would be most appreciated.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to