在android列表视图中重复的数据

Ank*_*kit 2 android listview adapter

我有一个列表视图,其适配器位于不同包中的不同类中.现在我必须从数据库中获取数据,然后使用此数据为我的列表视图设置Adapter.所以我创建了一个ArryList并在Adapter的构造函数中传递它,同时将它发送到列表视图.但问题是数据正在重复.例如,在arraylist中有12个不同的字符串,但我得到的是 - 依次为前五个元素,然后重复相同的五个元素.数据计数始终正确,但位置始终为0,1,2,3,4.我无法理解问题所在.这是代码 -

public class CheckboxAdapter extends BaseAdapter{

    LayoutInflater inflater ;
    ArrayList<String> mData = new ArrayList<String>();

    //constructor for lesion adapter
    public CheckboxAdapter (Context context, ArrayList<String> data){
        inflater = LayoutInflater.from(context);
        mData = data;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null){
            Log.v("pos", ""+position);
            convertView = inflater.inflate(R.layout.e_lesion_liststyle, null);          
            final CheckBox cb = (CheckBox) convertView.findViewById(R.id.disease_lesion_checkbox);
            cb.setText(mData.get(position));
            cb.setOnClickListener(new OnClickListener() {           
                @Override
                public void onClick(final View v) {
                    cb.setButtonDrawable(R.drawable.check_box_1);
                }
            });
        }//end of if condition
        return convertView;
    }
Run Code Online (Sandbox Code Playgroud)

Nir*_*tel 7

试试这个..只是写出所有代码的条件期望膨胀代码..

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null){
            Log.v("pos", ""+position);
            convertView = inflater.inflate(R.layout.e_lesion_liststyle, null);   
           }       //end of if condition
            final CheckBox cb = (CheckBox) convertView.findViewById(R.id.disease_lesion_checkbox);
            cb.setText(mData.get(position));
            cb.setOnClickListener(new OnClickListener() {           
                @Override
                public void onClick(final View v) {
                    cb.setButtonDrawable(R.drawable.check_box_1);
                }
            });

        return convertView;
    }
Run Code Online (Sandbox Code Playgroud)