2016-05-16 13 views
-2

Ich habe möglicherweise eigene Klasse "Torrent", die einige Daten über meine uTorrent Downloads auf dedizierten PC enthält. ArrayList<Torrent> torrents wird jede Sekunde im Hintergrund aktualisiert. Also, ich habe einen RecyclerView.Adapter wie bekanntes Muster. Sie mich erklären, warum dieser Code funktioniert perfekt:Logik von ViewHolder onBindViewHoleder() Methode?

@Override 
public void onBindViewHolder(final MyViewHolder holder,int position){ 
    ... 
    // Update ETA textView 
    holder.tvEta.setText(String.format(Locale.getDefault(),"%d h %d min %d s",torrents.get(position).getEta()/3600,(torrents.get(position).getEta()%3600)/60,torrents.get(position).getEta()%60)); 
    ... 
} 

Aber in diesem Fall ARBEITET NICHT? Es aktualisiert sich Wert auf Start und nicht mehr zu ändern:

@Override 
public void onBindViewHolder(final MyViewHolder holder,int position){ 
    ... 
     // Update ETA textView 
     int secs = torrents.get(position).getEta(); 
     int hours = secs/3600; 
     int minutes = (secs % 3600)/60; 
     int seconds = secs % 60; 
     holder.tvEta.setText(Locale.getDefault(), String.format("%d h %d min %d s", hours, minutes, seconds)); 
    ... 
} 

Antwort

0

innerhalb Adapter Schreib ein Verfahren, wie unten

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements View.OnClickListener { 

.... 
ArrayList<Torrent> torrentList; 

public void addItems(ArrayList<Torrent> torrents) 
{ 
torrentList = torrents; 
notifyDataSetChanged(); 
} 

@Override 
public int getItemCount() { 
return torrentList.size(); 
    } 
..... 
..... 
} 

in Ihrer Haupttätigkeit gezeigt

public class MainActivity extends Activity 
{ 
    ... 
    ... 
mAdapter.addItems(torrentList); 
    ... 
} 
+0

Funktioniert nicht .. Noch immer nicht mehr ändern ... – rbaloo