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 스레드에서 반복되므로 시간이 오래 걸릴 수 있습니다. –