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 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

