0

So, I am dynamically creating items for each card. It works all fine and dandy until it has to create a card at index >= 3. Once it reaches there, it recreate old content instead.

Somehow,it does not specify index 3 as having a converView of null. It's somewhat in between created and not created.

@Override
    public View getView(final int index, View convertView, ViewGroup parent) {
        View v = convertView;
        LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        pref =  activity.getSharedPreferences("pref", Context.MODE_PRIVATE);
        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            v = inflater.inflate(R.layout.view_card, parent, false);
            layout = (LinearLayout)v.findViewById(R.id.card_ll_details);

            v.setTag(holder);
            holder.title = (TextView)v.findViewById(R.id.card_title);
            holder.button = (Button)v.findViewById(R.id.card_addNote);
            holder.note = (TextView)v.findViewById(R.id.card_note);
            getDetails(index, v);
            Toast.makeText(activity, Integer.toString(index), Toast.LENGTH_SHORT).show();
        } else {
            holder = (ViewHolder)v.getTag();
            //Toast.makeText(activity, "hi" +Integer.toString(index), Toast.LENGTH_SHORT).show();
        }

        holder.title.setText(cardList.get(index).getTitle());
        holder.note.setText(cardList.get(index).getNote());
        holder.button.setText(cardList.get(index).getButtonText());
        String bs = cardList.get(index).getNote();
        if(bs.isEmpty()){
            holder.note.setVisibility(View.INVISIBLE);
            holder.button.setText("Add Note");
        } else {
            holder.note.setVisibility(View.VISIBLE);
            holder.button.setText("Delete Note");
        }
        holder.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final int ADD = 1;
                final int DELETE = 2;
                final int INDEX = index;
                if (holder.button.getText().toString().contains("Add")) {
                    Intent i = new Intent(activity, Notes.class);
                    i.putExtra("notes", holder.title.getText().toString());
                    i.putExtra("cardIndex", INDEX);
                    activity.startActivityForResult(i, ADD);
                } else {
                    Intent i = new Intent(activity, Confirmation.class);
                    i.putExtra("cardIndex", INDEX);
                    activity.startActivityForResult(i, DELETE);
                }
            }
        }
        );
        return v;
    }


    private void getDetails(int index, View v) {
        LinearLayout layout = (LinearLayout) v.findViewById(R.id.card_ll_details);
        ArrayList<TagSpinner> spinnerList = cardList.get(index).getSpinnerList();
        ArrayList<TagRadioGroup> radioList = cardList.get(index).getRadioGroup();
        ArrayList<CheckBox> checkList = cardList.get(index).getCheckList();

        for(TagSpinner tagSpinner : spinnerList) {
            layout.addView(cardList.get(index).inputSpinner(tagSpinner,activity));
        }
        for(TagRadioGroup group : radioList){
            layout.addView(cardList.get(index).inputRadioGroup(activity, group));
        }

        for (int i = 0; i < checkList.size(); i++) {
            layout.addView(cardList.get(index).inputCheckList(checkList.get(i), activity));
        }
    }

0 Answers0