2016-06-19 4 views
0

ListViewに含まれるオブジェクトの属性(IDと名前)を知っているリストビュー内の特定の行を更新(および削除)します。私は私のモデルクラスのArrayAdapterを拡張してリスト表示、用のアダプタを使用していListView内の特定のアイテムを更新する

View v = mListView.getChildAt() 

ので、私が使用することはできません、位置を知りません。

どのようにしてgetPositionメソッドをオーバーライドできますか? ここに私の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

活動とあなたのadaper間commicateリスナーを作る... –

+0

私はどんな例を見てもらえますか? – Alex

答えて

0

ない、それを行うための最善の方法が、このコードを見て:

@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

なぜベストな方法はありませんか? – Alex

+0

アイテムのサイズが大きすぎると、このサイクルはUIスレッドで繰り返され、時間がかかるためです。 –

関連する問題