Was ist die Arbeit von setTag und getTag im ViewHolder pattern?

Ich habe einen einfachen code-snippet für die Umsetzung custom listview.

Mein code ist wie folgt:

WeatherAdapter.java :

public class WeatherAdapter extends ArrayAdapter<weather>{

    Context mcontext; 
    int mlayoutResourceId;    
   weather mdata[] = null;
   View row;

    public WeatherAdapter(Context context, int layoutResourceId, weather[] data) {
        super(context, layoutResourceId, data);
        mlayoutResourceId = layoutResourceId;
       mcontext = context;
        mdata = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      row = convertView;
        WeatherHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ( (Activity) mcontext).getLayoutInflater();
            row = inflater.inflate(mlayoutResourceId, parent, false);

            holder = new WeatherHolder(row);


            row.setTag(holder);

        }
        else
        {
            holder = (WeatherHolder)row.getTag();
        }

        weather w = mdata[position];
        holder.txtTitle.setText(w.mtitle);
        holder.imgIcon.setImageResource(w.micon);

        return row;
    }

WeatherHolder.java:

class WeatherHolder
    {
        ImageView imgIcon;
        TextView txtTitle;


    public WeatherHolder(View v){

          imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
          txtTitle = (TextView)row.findViewById(R.id.txtTitle);

    }
    }
}

Habe ich gesehen, so viele Antworten auf SO und auf anderen Seiten und ich Verstand die recycling-Mechanismus der listview.

Verstand ich auch, dass aus den viewholder, können wir halten die untergeordneten Ansichten in den adapter, und wir haben nicht zu nennen findViewById() viele Male. So ist es für die Optimierung.

Aber ich habe nur die Verwirrung in setTag(holder) und getTag() Methoden. Von dieser Frage, Kam ich zu wissen, dass es für ein Schlüssel-Wert-paar auf mehreren Objekten, so dass wir leicht auf Sie zugreifen. Aber, ich verstehe nicht, warum Sie sind hier gefragt...weil, wir haben nicht mehrere Halter Objekten...nur wir müssen uns ändern-Halterung Variablen jeder Zeit. können wir hier den code ohne Verwendung setTag und getTag?

kann das jemand besser erklären, was setTag und getTag tun "hier"?

bitte markieren Sie nicht doppelt...ich habe gesehen, so viele Antworten, konnte aber nicht das Recht, die für eine Besondere situation.
warum nicht versuchen Sie es und sehen, was das Ergebnis ist?
Ich habe bereits versucht...ich habe nicht gestellte Frage ohne versuchen..Wenn du das weißt, dann bitte die Antwort geben

InformationsquelleAutor Fenil | 2014-09-22

Schreibe einen Kommentar