2014-12-16 2 views
0

각 행에 EditText가있는 목록보기가 있습니다. 각 EditText에는 유효성 검사가 있으므로 MenuItem "마침"을 클릭하면 각 EditText의 유효성을 검사하고 오류가있는 경우 오류를 표시하려고합니다.어댑터 외부의 목록보기에서 EditText 가져 오기

내 어댑터 내에서 내 EditText에 액세스하는 방법을 알고 있지만 내 어댑터에서는 MenuItem에 액세스 할 수 없습니다. 내 어댑터 외부에서 MenuItem OnClick에 액세스 할 수 있지만 편집 텍스트 값을 더 이상 가져올 수 없습니다 ...

모든 솔루션 ???

+0

사용자가 "마침"메뉴를 클릭 할 때 어댑터의 필드 (예 :'needValidation')를'true'로 설정할 수 있습니다. 그런 다음 어댑터에서'notifyDataSetChanged()'를 호출하십시오. 따라서 귀하는 귀하의 견해에 다시 액세스 할 수 있습니다. 검증이 완료되면'needValidation'을'false'로 다시 설정하십시오. –

답변

3

당신은 당신의 목록보기를 통해 반복과 같은 것을 수행 할 수 있습니다

View v = myList.getAdapter().getView(i, null, null); 
EditText et = (EditText) v.findViewById(nameOfTheView); 

확인 this answer합니다. 그럼 당신은 당신의 getView 방법으로 사용

public class MyVarHolder { 
    public EditText myText; 
} 

: 당신이 할 수

+0

'getView (int, View, ViewGroup)'메소드의'convertView' 및'parent' 매개 변수에'null'을 사용하면 재활용 전략이 느슨해지고 현재보기에 대한 잘못된'LayoutParam'으로 끝날 수 있습니다. –

+0

그 값으로 액세스 할 수 있지만 setErrors를 사용하여 오류를 표시 할 수는 없습니다. 어댑터 내부에서 뷰를 수정하는 방법을 알고 있습니까? –

+0

setErrors는 무엇을하고 있습니까? 약간의 코드를 게시하십시오 – Biniou

-1

한 가지 변수를 보유하는 클래스 설정입니다

mHolder.myText = (EditText) root.findViewById(R.id.my_edit_text); 
convertView.setTag(mHolder); 

마지막 단계의 OnClickListener를에 홀더를 얻을 수있다 목록 : 내가 사용 해결

onItemClickListener(AdapterView<?> adapterView, View view, int position, long id) { 
    MyVarHolder tag = (MyVarHolder)view.getTag(); 

    String editText = tag.myText.getText().toString(); 

    ...Do whatever you want... 

} 
+0

이것은 내 어댑터 안에 있습니다. 나는 외부에서 그것을 사용해야합니다. –

+0

'onItemClickListener'는'Activity' 또는'Fragment' 밖에 있습니다 – TheRedFox

+0

onItemClickListener가 아닌 menuItem을 확인해야합니다. 그렇지 않으면, 나는 어댑터에서 그것을 할 수있다. –

관련 문제