2

어댑터와 조각이 있습니다.getView 메서드 외부에서 뷰 및 홀더 객체를 얻는 방법은 무엇입니까?

이 시나리오 고려 :

  1. 어댑터가 기본 텍스트를 편집하여 텍스트 편집

  2. 을 가지고하는 것은 편집 할 수 없습니다

  3. 조각은 편집 아이콘 어댑터의 편집의 클릭에 하나의 편집 아이콘
  4. 있다 텍스트는 수정 가능해야 함
여기

는 조각 코드 :

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

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.layout, null); 
     holder = new ViewHolder(); 
     holder.EditText = (EditText) convertView.findViewById(R.id.edit_text); 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
} 


// This is method i am calling from fragment to make editText editable 
public void makeEditTextEditable() { 
    // How do i get holder object and view object here? OR 
    // How do i make edit text editable from this method? 
} 

답변

3

boolean mEditTextEditable = false; 

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

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.layout, null); 
     holder = new ViewHolder(); 
     holder.EditText = (EditText) convertView.findViewById(R.id.edit_text); 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    }  

    holder.EditText.setEnabled(mEditTextEditable); 
} 

public void setEditTextEditable(boolean editable) { 
    if(editable == mEditTextEditable) return; 

    mEditTextEditable = editable; 
    notifyDatasetChange();  
} 

당신의 getView() 메소드하지만 외부에서보기를 얻을 요구하고 어댑터 내부 : 여기

editIcon.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Adapter.makeEditTextEditable(); 
    } 
}); 

는 어댑터 코드 ListView/RecyclerView를 사용하면 뷰를 개별적으로 다룰 필요가 없습니다.

+0

@lelloman이 제대로 작동하고 있습니다 ... –

+0

;) 당신을 환영합니다. – lelloman