I'm still looking for some answers :p
On 4 juin, 10:29, Tom <[email protected]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---

