So funktioniert der Recycling-Mechanismus von ListView

Also ich habe dieses Problem, das ich vorher hatte, und natürlich habe ich um Hilfe gebetenHier. Die Antwort von Luksprog war großartig, da ich keine Ahnung hatte, wie ListView und GridView sich beim Recycling von Ansichten selbst optimierten. So konnte ich mit seinem Rat ändern, wie ich Ansichten zu meinem GridView hinzufügte. Problem ist jetzt, ich habe etwas, das keinen Sinn ergibt. Das ist meingetView Von meinemBaseAdapter:

public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.day_view_item, parent, false);
        }
        Log.d("DayViewActivity", "Position is: "+position);
        ((TextView)convertView.findViewById(R.id.day_hour_side)).setText(array[position]);
        LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.day_event_layout);

        //layout.addView(new EventFrame(parent.getContext()));

        TextView create = new TextView(DayViewActivity.this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 62, getResources().getDisplayMetrics()), 1.0f);
        params.topMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
        params.bottomMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
        create.setLayoutParams(params);
        create.setBackgroundColor(Color.BLUE);
        create.setText("Test"); 
        //the following is my original LinearLayout.LayoutParams for correctly setting the TextView Height
        //new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics()), 1.0f)   
        if(position == 0) {
            Log.d("DayViewActivity", "This should only be running when position is 0. The position is: "+position);
            layout.addView(create);
        }

        return convertView;
    }

}

Das Problem ist, wenn ich scrolle, passiert dies und nicht auf Position 0 ... Sieht aus wie Position 6 und Position 8, plus es bringt zwei auf Position 8. Jetzt versuche ich immer noch, den Dreh raus mit ListView und GridView zu bekommen verstehe nicht, warum das passiert. Einer der Hauptgründe, warum ich diese Frage stelle, ist, anderen zu helfen, die wahrscheinlich nichts über ListView und GridView's Recycling View wissen oder wie dies geschiehtArtikel drückt es aus, ScrapView-Mechanismus.

Später bearbeiten

Hinzufügen eines Links zu einem Google IO-Talk, der im Grunde alles ist, was Sie benötigen, um zu verstehen, wie ListView funktioniert. Link war in keinem der Kommentare verblüfft. User3427079 war also nett genug, um diesen Link zu aktualisieren.Hier Es ist für den einfachen Zugang.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage