In my getView method when I am trying click an imagebutton of a view,Imagebutton of its adjacent view is being clicked and same for the other UI's,which means it is returning wrong view each time.I am not able to figure out where the problem is.
Adapter Class
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView iv;
//View v = convertView;
String content = null;
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView==null) {
convertView=inflater.inflate(R.layout.row_item2,parent,false);
holder = new ViewHolder();
pos=position;
holder.read_more=(TextView)convertView.findViewById(R.id.readMore);
holder.share=(TextView)convertView.findViewById(R.id.share);
holder.heading = (TextView)convertView.findViewById(R.id.heading);
holder.date = (TextView)convertView.findViewById(R.id.date);
holder.message = (TextView)convertView.findViewById(R.id.message);
holder.gridview=(GridView)convertView.findViewById(R.id.grid_view);
holder.comment_executed=(ImageView)convertView.findViewById(R.id.comments);
holder.image=(ImageView)convertView.findViewById(R.id.img);
holder.like_img=(ImageButton)convertView.findViewById(R.id.like);
convertView.setTag(holder);
}else {
holder=(ViewHolder)convertView.getTag();
}
holder.read_more.setVisibility(View.GONE);
holder.image.setVisibility(View.GONE);
holder.gridview.setVisibility(View.GONE);
holder.heading.setText(Html.fromHtml(modelList.get(position).getTitle()));
//String setDate=parseDate(modelList.get(position).getDate());
holder.date.setText(modelList.get(position).getDate());
holder.like_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,holder.heading.getText()+" "+modelList.get(position).getTitle(), Toast.LENGTH_SHORT).show();
holder.like_img.setImageResource(R.drawable.up_arrow_hover);
}
});
holder.gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// Sending image id to FullScreenActivity
Intent i = new Intent(context, FullImageActivity.class);
// passing array index
i.putExtra("id", position);
context.startActivity(i);
}
});
content=Html.fromHtml(modelList.get(position).getContent())+"";
size=content.length();
String altered_string="";
if(size>200) {
altered_string=content.substring(0,200);
holder.message.setText(altered_string+"...");
holder.read_more.setVisibility(View.VISIBLE);
holder.read_more.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
intent_to_details=new Intent(v.getContext(),PostDetail.class);
Log.e("after",position+"");
intent_to_details.putExtra("list", modelList.get(position));
((Activity)context).startActivity(intent_to_details);
}
});
}else {
holder.message.setText(Html.fromHtml(modelList.get(position).getContent()));
}
holder.message.setMovementMethod(LinkMovementMethod.getInstance());
holder.message.setLinksClickable(true);
if(modelList.get(position).getModelChild().size() != 0) {
if(modelList.get(position).getModelChild().size() ==1) {
Bitmap bit;
child_list=modelList.get(position).getModelChild();
flag=true;
holder.image.setVisibility(View.VISIBLE);
imageLoader.DisplayImage(child_list.get(0).getImage_normal(),loader,holder.image);
//new DoAsync().execute(child_list);
}else {
holder.gridview.setVisibility(View.VISIBLE);
child_list=modelList.get(position).getModelChild();
new DoAsync().execute(modelList.get(position).getModelChild());
}
}
holder.comment_executed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences prefs = context.getSharedPreferences(MY_PREFS_NAME, ((Activity)context).MODE_PRIVATE );
if(prefs.getString("succ", "").equals("success") || (Session.getActiveSession() != null)) {
Toast.makeText(context,holder.heading.getText(), Toast.LENGTH_SHORT).show();
int post_id=Integer.parseInt(modelList.get(position).getId());
intent_to_commentClass=new Intent(context,Comments.class);
Log.e("post id sent: ","position: "+position+" post id: "+post_id+"");
intent_to_commentClass.putExtra("post_id", post_id);
context.startActivity(intent_to_commentClass);
}else {
intent_to_login=new Intent(context,LoginClass.class);
context.startActivity(intent_to_login);
Toast.makeText(context, "Please login first to like or comment", Toast.LENGTH_SHORT).show();
}
}
});
return convertView;
}
You need to notify after performing any changes.