[RESOLVIDO] Problemas com ListView personalizado (BaseAdapter)

Criei uma uma ListView com checkBox e EditText, ficou bem legal, porém quando uso rolagem a opção selecionada aparece na proxima caixa abaixo do limite da tela, muito estranho. segue o codigo abaixo:

package app.infinity.android.com.myproject;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;

import java.util.ArrayList;

/**

  • Created by djavan on 08/10/16.
    */
    public class AdapterListItens extends BaseAdapter {

    private ArrayList myItem;
    private LayoutInflater context;

    public AdapterListItens(Context context, ArrayList itens) {
    //Itens que preencheram o listview
    this.myItem = itens;
    //responsavel por pegar o Layout do item.
    this.context = LayoutInflater.from(context);

     this.notifyDataSetChanged();
    

    }

    @Override
    public int getCount() {
    return myItem.size();
    }

    @Override
    public Object getItem(int position) {
    return myItem.get(position);
    }

    @Override
    public long getItemId(int position) {
    return myItem.get(position).getId();
    }

    @Override
    public View getView(final int position, View v, ViewGroup parent) {

     final ViewItemEditable viewEditable;
    
     if(v==null) {
         v  = context.inflate(R.layout.item_list, parent, false);
         //final int index = (int)v.getTag();
         viewEditable = new ViewItemEditable();
    
         viewEditable.checkItem = (CheckBox) v.findViewById(R.id.checkItem);
    
         viewEditable.checkPrice = (CheckBox) v.findViewById(R.id.checkMoney);
         viewEditable.price = (EditText) v.findViewById(R.id.editMoney);
    
         v.setTag(viewEditable);
         viewEditable.checkItem.setTag(Integer.valueOf(position));
         viewEditable.checkItem.setChecked(myItem.get(position).isSelected());
         viewEditable.checkItem.setOnCheckedChangeListener(mListener);
     }else{
         viewEditable = (ViewItemEditable) v.getTag();
     }
    
     viewEditable.checkItem.setText("" + myItem.get(position).getName());
     viewEditable.price.setText("" + myItem.get(position).getUnity());
     viewEditable.checkPrice.setSelected(myItem.get(position).getInclide());
    
     if (myItem != null && myItem.get(position) != null) {
         viewEditable.price.setText(""+myItem.get(position).getUnity());            
         }
     else {
         viewEditable.price.setText(null);
         }
    
     viewEditable.checkPrice.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             if (((CheckBox) v).isChecked()) {
                 viewEditable.price.setEnabled(true);
             }else{
                 viewEditable.price.setEnabled(false);
             }
         }
     });
    
     viewEditable.price.setOnFocusChangeListener(new View.OnFocusChangeListener() {
         @Override
         public void onFocusChange(View v, boolean hasFocus) {
         //When focus is lost save the entered value for later use
              if (!hasFocus) {
                  String enteredPrice = ((EditText) v).getText().toString();
                  if(position<myItem.size()) {
                      myItem.get(position).setPrice(Float.parseFloat(enteredPrice));
                         }
                     }
                 }
             });
     return v;
    

    }

    OnCheckedChangeListener mListener = new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    myItem.get((int)buttonView.getTag()).setSelected(isChecked);
    }
    };

    class ViewItemEditable {
    EditText price;
    CheckBox checkItem;
    CheckBox checkPrice;
    }
    }

Nao sei exatamente porque a lista apresentou esse problema, espero que tenham entendido.

consegui resolver assim:

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.EditText;

import java.util.ArrayList;

/**

  • Created by djavan on 08/10/16.
    */
    public class AdapterListItens extends BaseAdapter {

    private ArrayList myItem;
    private Activity context;
    private boolean[] itemChecked;

    public AdapterListItens(Activity context, ArrayList itens) {

     super();
     this.context = context;
     this.myItem = itens;
     itemChecked = new boolean[itens.size()];
    

    }

    @Override
    public int getCount() {
    return myItem.size();
    }

    @Override
    public Object getItem(int position) {
    return myItem.get(position);
    }

    @Override
    public long getItemId(int position) {
    return myItem.get(position).getId();
    }

    @Override
    public View getView(final int position, View v, ViewGroup parent) {

     final ViewItemEditable viewEditable;
     LayoutInflater inflater = context.getLayoutInflater();
    
     if(v==null) {
         v  = inflater.inflate(R.layout.item_list, null);
         viewEditable = new ViewItemEditable();
    
         viewEditable.checkItem = (CheckBox) v.findViewById(R.id.checkItem);
         viewEditable.checkPrice = (CheckBox) v.findViewById(R.id.checkMoney);
         viewEditable.price = (EditText) v.findViewById(R.id.editMoney);
    
         v.setTag(viewEditable);
     }else{
         viewEditable = (ViewItemEditable) v.getTag();
     }
    
     Item item = (Item)getItem(position);
    
     viewEditable.checkItem.setText("" + myItem.get(position).getName());
     viewEditable.price.setText("" + myItem.get(position).getPrice());
     viewEditable.checkPrice.setSelected(myItem.get(position).getInclide());
    
     if(itemChecked[position]){
         viewEditable.checkItem.setChecked(true);
         myItem.get(position).setSelected(true);
     }else {
         viewEditable.checkItem.setChecked(false);
         myItem.get(position).setSelected(false);
     }
    
     viewEditable.checkItem.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             // TODO Auto-generated method stub
             if (viewEditable.checkItem.isChecked()) {
                 itemChecked[position] = true;
                 myItem.get(position).setSelected(true);
             }
             else {
                 itemChecked[position] = false;
                 myItem.get(position).setSelected(false);
             }
         }
     });
    
    
     return v;
    

    }

    class ViewItemEditable {
    EditText price;
    CheckBox checkItem;
    CheckBox checkPrice;
    }
    }

agora ficou perfeito o evento dos checkBox nos itens da lista.