2

У меня есть адаптер и фрагмент.Как получить объект просмотра и держателя вне метода getView?

Рассмотрим такого сценария:

  1. адаптера Edit Text

  2. По редактированию текста по умолчанию не редактируется

  3. Фрагмент имеет один редактировать значок
  4. На щелчке Править Значок адаптера текст должен стать редактируемым

Вот фрагмент кода:

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

здесь код адаптера:

@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() метод, но я не советовал бы ему, весь смысл наличия ListView/RecyclerView не должен иметь дело с этими представлениями отдельно

+0

Спасибо @lelloman, он работает нормально ... –

+0

;) приветствую вас – lelloman