Thanks for your reply.

In fact I want that each items are focusable and selectable AND
checkboxes only selectable.
I want to add a context menu for each items.

Is it possible?


On 3 juin, 19:29, Romain Guy <[email protected]> wrote:
> You can't, it's one or the other. If you put a focusable widget in a
> list item, that's what happens. If you need checkboxes, use ListView's
> choice mode instead.
>
>
>
> On Wed, Jun 3, 2009 at 10:25 AM, Tom <[email protected]> wrote:
>
> > Hi,
> > One of my ListView's has a CheckBox on every item's RelativeLayout.
>
> > I just found that clicking on any item of the ListView does not
> > callback its OnItemClick().
>
> > If I remove the CheckBox from item layout, callback is ok then.
>
> > My app needs to get both callbacks from the CheckBox as well as from
> > "the other area" of a ListView item.
>
> > I read
> >http://android-developers.blogspot.com/2008/12/touch-mode.html
> > But I'm a bit confuse.
>
> > Can anybody advise me how I get the callback on the ListView with
> > CheckBox?
>
> > public class UserList extends ListActivity implements
> > ListView.OnItemClickListener, ListView.OnClickListener{
>
> >        private Client client;
> >        private ArrayList<User> users = new ArrayList<User>();
> >        private UserAdapter userAdapter;
>
> >   �...@override
> >    public void onCreate(Bundle savedInstanceState) {
> >        super.onCreate(savedInstanceState);
> >        setContentView(R.layout.user_list);
>
> >        getListView().setOnItemClickListener(this);
>
> >        Intent i = getIntent();
> >        if (i!= null)
> >        {
> >                if (i.getAction().equalsIgnoreCase(Intent.ACTION_VIEW))
> >                {
> >                this.client = (Client) i.getSerializableExtra
> > (Constants.CLIENT_CLASS_NAME);
>
> >                this.userAdapter = new UserAdapter(this,
> > R.layout.user_row, users);
>
> >                users = (ArrayList<User>) this.client.getUsers();
>
> >                Log.i(getClass().getSimpleName(),"Display users");
> >                for(int j=0;j<users.size();j++)
> >                {
> >                        this.userAdapter.add(users.get(j));
> >                }
> >                setListAdapter(this.userAdapter);
>
> >                }
> >        }
> >    }
>
> >   �...@override
> >    public void onItemClick(AdapterView<?> adapterView, View view, int
> > position, long id)
> >    {
> >        Log.d(getClass().getSimpleName(), " -- Click on User item -- ");
> >    }
>
> >    private class UserAdapter extends ArrayAdapter<User> {
>
> >        private LayoutInflater mInflater;
> >        private ArrayList<User> items;
>
> >        public UserAdapter(Context context, int resourceId,
> > ArrayList<User> items)
> >        {
> >                super(context, resourceId, items);
> >            mInflater = LayoutInflater.from(context);
> >                this.items = items;
> >        }
>
> >        public boolean areAllItemsSelectable()
> >        {
> >            return true;
> >        }
>
> >        public boolean isEnabled(int position) {
> >            if (position >= 0 && position <= items.size()) {
> >                return true;
> >            }
> >            return false;
> >        }
>
> >        public int getCount() {
> >            return items.size();
> >        }
>
> >        public User getItem(int position) {
> >              if (0 == position) {
> >                  return null;
> >              }
> >              return items.get(position);
> >         }
>
> >       �...@override
> >        public View getView(int position, View convertView, ViewGroup
> > parent) {
> >            // A ViewHolder keeps references to children views to
> > avoid unnecessary calls
> >            // to findViewById() on each row.
> >            ViewHolder holder = null;
> >            View v = convertView;
> >            User user = items.get(position);
>
> >            if (v == null) {
> >                mInflater = (LayoutInflater)getSystemService
> > (Context.LAYOUT_INFLATER_SERVICE);
> >                v = mInflater.inflate(R.layout.user_row, null);
>
> >                    if (user != null) {
> >                        // Creates a ViewHolder and store references to the
> > children views
> >                        // we want to bind data to.
> >                        holder = new ViewHolder();
> >                        holder.firstNameText = (TextView) v.findViewById
> > (R.id.user_first_name);
> >                        holder.lastNameText = (TextView) v.findViewById
> > (R.id.user_last_name);
> >                        holder.phoneNumberText = (TextView) v.findViewById
> > (R.id.user_phone_number);
> >                        holder.statusText = (TextView) v.findViewById
> > (R.id.user_status);
> >                    }
>
> >                    v.setTag(holder);
> >            }
> >                else
> >                {
> >                        // Get the ViewHolder back to get fast access to the
> > TextView
> >                // and the ImageView.
> >                holder = (ViewHolder) v.getTag();
> >                }
>
> >            if (holder.firstNameText != null) {
> >                holder.firstNameText.setText(user.getFirstName());
> >            }
> >            if (holder.lastNameText != null){
> >                holder.lastNameText.setText(user.getLastName());
> >            }
> >            if ( holder.phoneNumberText != null){
> >                 holder.phoneNumberText.setText(user.getPhoneNumber());
> >            }
> >            if (holder.statusText != null){
> >                holder.statusText.setText(String.valueOf(user.getStatus
> > ()));
> >            }
>
> >            return v;
> >        }
>
> >        class ViewHolder {
> >            TextView firstNameText;
> >            TextView lastNameText;
> >            TextView phoneNumberText;
> >            TextView statusText;
>
> >        }
>
> >    }
>
> > Best regards
> > Tom
>
> --
> Romain Guy
> Android framework engineer
> [email protected]
>
> Note: please don't send private questions to me, as I don't have time
> to provide private support.  All such questions should be posted on
> public forums, where I and others can see and answer them
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to