Данные повторяются в представлении списка Android - PullRequest
2 голосов
/ 09 сентября 2011

У меня есть представление списка, адаптер которого находится в другом классе в другом пакете. Теперь я должен получить данные из базы данных, а затем установить Adapter для своего списка, используя эти данные. Итак, я создал ArryList и передал его в конструктор Adapter, одновременно просматривая его для представления списка. Но проблема в том, что данные повторяются. Например, в массиве есть 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;
    }

1 Ответ

7 голосов
/ 09 сентября 2011

попробуй это .. просто напиши весь код из условия ожидай инфляционного кода ..

@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;
    }
...