2016-06-19 14 views
0

Ich möchte bestimmte Zeilen in meinem ListView aktualisieren (und löschen), wobei ich die Attribute (ID und Name) des in der ListView enthaltenen Objekts kenne. Ich weiß nicht, die Position, also ich nichtAktualisieren bestimmter Elemente in ListView

verwenden können
View v = mListView.getChildAt() 

ich einen Adapter für die Listenansicht verwenden, die eine ArrayAdapter meiner Modellklasse erweitert.

Wie kann ich die Methode getPosition überschreiben? Hier mein ListViewAdapter

public class ListViewAdapter extends ArrayAdapter<ModelTimer> { 


    public List<ModelTimer> mListOfTimers; 
    private Context mContext; 

    public ListViewAdapter(Context context, List<ModelTimer> modelTimerList) { 
     super(context, R.layout.item_active_timer, modelTimerList); 
     this.mListOfTimers = modelTimerList; 
     this.mContext = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     // Get the data item for this position 
     ModelTimer modelTimer = getItem(position); 
     // Check if an existing view is being reused, otherwise inflate the view 
     ViewHolder holder;// view lookup cache stored in tag 

     if (convertView == null) { 
      holder = new ViewHolder(); 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      convertView = inflater.inflate(R.layout.item_active_timer, parent, false); 
      holder.tvTime = (TextView) convertView.findViewById(R.id.active_timer_timeLeft); 
      holder.tvTitle = (TextView) convertView.findViewById(R.id.active_timer_name); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     // Populate the data into the template view using the data object 
     holder.tvTime.setText(modelTimer.expirationTime); 
     holder.tvTitle.setText(modelTimer.name); 

     // Return the completed view to render on screen 
     return convertView; 
    } 

    @Override 
    public int getPosition(ModelTimer item) { 
     return super.getPosition(item); 
    } 

    // View lookup cache 
    public class ViewHolder { 
     TextView tvTitle; 
     TextView tvTime; 
    } 


} 
+0

einen Zuhörer Stellen, die zwischen Aktivität und Ihrem adaper commicate ... –

+0

Kann ich kein Beispiel sehen? – Alex

Antwort

0

nicht der beste Weg, es zu tun, aber diesen Code aussehen:

@Override 
    public int getPosition(ModelTimer item) { 
    int pos = -1; 
    for(int i = 0; i < mListOfTimers.size(); i++) 
     if(mListOfTimers.name.equals(item.name) // and check id 
     pos = i; 
     return pos; 
    } 
+0

Warum nicht der beste Weg? – Alex

+0

weil, wenn die Größe der Elemente zu groß ist, wird dieser Zyklus sie in ui Thread iterieren und es wird einige Zeit dauern. –

Verwandte Themen