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.....
publicclassMyAdapterextendsArrayAdapter<Item> {
privatefinal Context context;
privatefinal ArrayList<Item> itemsArrayList;
staticclassViewHolder {
TextView textday;
TextView text1;
TextView text2;
TextView text3;
}
publicMyAdapter(Context context, ArrayList<Item> itemsArrayList) {
super(context, R.layout.list_row, itemsArrayList);
this.context = context;
this.itemsArrayList = itemsArrayList;
}
@OverridepublicintgetCount() {
return itemsArrayList.size();
}
@Overridepublic Object getItem(int location) {
return itemsArrayList.get(location);
}
@OverridepubliclonggetItemId(int position) {
return position;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
LayoutInflaterinflater= ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(R.layout.list_row, parent, false);
viewHolder = newViewHolder();
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
@OverridepublicintgetViewTypeCount() {
return YourList.size();
}
@OverridepublicintgetItemViewType(int position) {
return position;
}
Post a Comment for "Could Not Get Correct Position In Listview"