Reputation: 3031
I have a problem with click on item. I want to click on item and show layout which is invisible in this item. When I click on first item, layout show, but in other item. This is my adapter:
public ActualOffersUsersListAdapter(Context context, ArrayList<Offers> offers, ArrayList<User> users) {
this.context = context;
offersList = offers;
this.users = users;
inflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return offersList.size();
}
@Override
public Object getItem(int position) {
return offersList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(
R.layout.contact_with_users_list_item, null);
holder = new ViewHolderUsers();
holder.cities = (TextViewWithImage) convertView.findViewById(R.id.contactWithUsersCityFrom);
holder.name = (TextView) convertView.findViewById(R.id.contactWithUsersName);
holder.date = (TextView) convertView.findViewById(R.id.contactWithUsersCalendarTXT);
holder.picture = (NetworkImageView) convertView.findViewById(R.id.contactWithUsersPicture);
holder.contactWithUsersTransportIcon = (ImageView) convertView.findViewById(R.id.contactWithUsersTransportIcon);
holder.contactWithUsersShipmentIcon = (ImageView) convertView.findViewById(R.id.contactWithUsersShipmentIcon);
holder.expandImageView = (ImageView) convertView.findViewById(R.id.expandImageView);
holder.myOffersExpand = (LinearLayout) convertView.findViewById(R.id.myOffersExpand);
convertView.setTag(holder);
} else {
holder = (ViewHolderUsers)convertView.getTag();
}
holder.cities.setText(offersList.get(position).getStart() + " [img src=ic_in_text_arrow/] " + offersList.get(position).getDestination());
holder.date.setText(offersList.get(position).getCreatedAt());
if(messageUser!=null) {
for(int i = 0; i < usersMessages.size(); i++){
if(offersList.get(position).getUserId() == usersMessages.get(i).getId()){
if(usersMessages.get(i).getUserType().equals("company"))
holder.name.setText(usersMessages.get(i).getProfile().getCompanyName());
else{
if(usersMessages.get(i).getProfile().getFirst_name() == null && usersMessages.get(i).getProfile().getLast_name() == null)
holder.name.setText("-");
else
holder.name.setText(usersMessages.get(i).getProfile().getFirst_name() + " " + usersMessages.get(i).getProfile().getLast_name());
}
if(!usersMessages.get(i).getAvatarURL().contains("http")) {
holder.picture.setImageUrl("http://" + usersMessages.get(i).getAvatarURL(), mImageLoader);
}else{
holder.picture.setImageUrl(usersMessages.get(i).getAvatarURL(), mImageLoader);
}
notifyDataSetChanged();
lastSeenOffersList.refreshDrawableState();
}
}
}
if(offersList.get(position).getShipmentType() != null) {
holder.contactWithUsersShipmentIcon.setImageDrawable(ShipmentTypeEnum.
setIconForShipmentType(ShipmentTypeEnum.fromString(offersList.get(position).getShipmentType()), getApplicationContext()));
}else{
holder.contactWithUsersShipmentIcon.setVisibility(View.GONE);
}
if(offersList.get(position).getTransportType() != null) {
holder.contactWithUsersTransportIcon.setImageDrawable(TransportTypeEnum
.setIconForTransportType(TransportTypeEnum.fromString(offersList.get(position).getTransportType()), getApplicationContext()));
}else{
holder.contactWithUsersTransportIcon.setVisibility(View.GONE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.myOffersExpand.setVisibility(View.VISIBLE);
}
});
holder.contactWithUsersTransportIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
holder.contactWithUsersShipmentIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return convertView;
}
}
public static class ViewHolderUsers {
public TextViewWithImage cities;
public NetworkImageView picture;
public TextView date;
public TextView name;
public ImageView contactWithUsersTransportIcon;
public ImageView contactWithUsersShipmentIcon;
public ImageView expandImageView;
public LinearLayout myOffersExpand;
public boolean isExpand = false;
}
It is something wrong with
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.myOffersExpand.setVisibility(View.VISIBLE);
}
});
Any idea why?
Upvotes: 0
Views: 43
Reputation: 1285
Try to attach an onItemClickListener to the ListView. So, your code will look like this :
Listview listview = new ListView(this);
ActualOffersUsersListAdapter adapter = new ActualOffersUsersListAdapter(/*arguments here*/);
listview.setAdapter(adapter);
listview.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long
Toast.makeText(this,"You selected : " + position,Toast.LENGTH_SHORT).show();
// your code
}
});
Upvotes: 1