Could Not Get Correct Position In Listview
when i try to change background colour of position one in list view then background colour of both position one and five changes public class MyAdapter extends ArrayAdapter-
Solution 1:
I have make changes in your code. And let me know if it will not work. But there is least chances to not work.....
public class MyAdapter extends ArrayAdapter<Item> {
private final Context context;
private final ArrayList<Item> itemsArrayList;
static class ViewHolder {
TextView textday;
TextView text1;
TextView text2;
TextView text3;
}
public MyAdapter(Context context, ArrayList<Item> itemsArrayList) {
super(context, R.layout.list_row, itemsArrayList);
this.context = context;
this.itemsArrayList = itemsArrayList;
}
@Override
public int getCount() {
return itemsArrayList.size();
}
@Override
public Object getItem(int location) {
return itemsArrayList.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(R.layout.list_row, parent, false);
viewHolder = new ViewHolder();
viewHolder.textday = (TextView)convertView.findViewById(R.id.w1);
viewHolder.text1 = (TextView)convertView.findViewById(R.id.l1);
viewHolder.text2 = (TextView)convertView.findViewById(R.id.l2);
viewHolder.text3 = (TextView)convertView.findViewById(R.id.l3);
convertView.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.text1.setText(itemsArrayList.get(position).getTitle());
viewHolder.text2.setText(itemsArrayList.get(position).getDescription());
viewHolder.text3.setText(itemsArrayList.get(position).getthird());
viewHolder.textday.setText(itemsArrayList.get(position).getDay());
/* no need again access viewHolder over here you already done this part viewHolder = (ViewHolder)convertView.getTag(); so remove this part*/
if(position == 1 )
{
convertView.setBackgroundColor(Color.parseColor("#00796b"));
viewHolder.text1.setTextColor(Color.parseColor("#ffffff"));
viewHolder.text2.setTextColor(Color.parseColor("#ffffff"));
viewHolder.text3.setTextColor(Color.parseColor("#ffffff"));
}else{
//add this additional code to change old color if position is not equal to zero.
convertView.setBackgroundColor(Color.parseColor("replaceColorCode"));
viewHolder.text1.setTextColor(Color.parseColor("replaceColorCode"));
viewHolder.text2.setTextColor(Color.parseColor("replaceColorCode"));
viewHolder.text3.setTextColor(Color.parseColor("replaceColorCode"));
}
return convertView;
}
}
Solution 2:
Put This methods in your adapter class
@Override
public int getViewTypeCount() {
return YourList.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
Post a Comment for "Could Not Get Correct Position In Listview"