Skip to content Skip to sidebar Skip to footer

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"