2011-08-03 2 views
0

이상한 행동이 있습니다. 아마도 어리석은 일이지만 해결책을 찾을 수 없다.팽창 된 EditText에 데이터를 입력 할 수 없습니다. S

각 행에서 사용자가 항목의 여러 특성에 대한 값을 입력 할 수 있도록 테이블을 표시하는 응용 프로그램을 개발하고있다. 각 항목).

행에 대한 xml 파일을 작성했으며 ListView 내에서 각 항목에 대한 파일을 팽창시킵니다. 행은 기본적으로 여러 개의 EditText 및 TextView로 구성됩니다.

모든 것이 정상적으로 작동하지만 가상 키보드가 사라지 자마자 입력 한 모든 데이터가 사라집니다. 내 행의 XML 파일로 setContentView를 직접 사용하고 있기 때문에 팽창 할 때 문제가있는 것 같습니다. 그런 문제는 없습니다.

아이디어가 있으십니까?

private View generateItemRowView(int position, ViewGroup parent){ 
    String itemName = itemList[position]; 
    LayoutInflater inflater=this.getLayoutInflater(); 
    View result =inflater.inflate(R.layout.item_row_layout, parent, false); 
    Button rowName=(Button)result.findViewById(R.id.row_item_name); 
    rowName.setTag(""+position); 
    rowName.setText(itemName); 
    return result;  
} 

감사

+0

"itemName"에 값이 있습니까? 빈 문자열 일 수 있습니까? –

답변

0

시도 이것으로 두 번째 행을 변경 :

다음은 내 XML 파일이 (가 ListView를위한 ArrayAdapter와의의 getView 메서드에서 호출) 팽창 코드입니다 :

LayoutInflater inflater = (LayoutInflater) this.getContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

이 내 프로젝트에서 작동 ^^ ListView에 AFAIK

+0

unfortunatelly, 아무것도 변경되지 않습니다. 아마 문제가 부풀린 xml 즉 LinearLayout -> TableLayout의 구조에 있습니다. 정말 이상합니다. – manu

+0

XM에서 어떤 레이아웃을 사용합니까? 엘? layout.xml 파일을 게시 할 수 있습니까? 세 번째 줄을 지나면 tablelayout을 얻고이 변수를 사용하여 Button에 액세스 할 수 있습니다. –

+0

다음 5 시간 내에 내 자신의 질문에 100 점의 평판을 부여하지 못하는 것 같습니다 : S 그리고 어떤 분야에도 접근 할 수있는 문제는 아닙니다. 나는 그들에게 접근 할 수있다. 가상 키보드가 제거되면 입력 한 데이터가 사라지는 것입니다. 처음에는 LinearLayout을 루트로 사용하고 그 중에 TableLayout을 사용합니다. – manu

0

뷰를 재활용합니다 (모든 데이터에 대해 여러 개 사용). 데이터 변경 (발생 또는 입력 끝에서)은 어딘가에 저장해야합니다. 필요한 경우 (getView 호출) 데이터 (변경됨)도 설정해야합니다. Mark Murphy의 "악명 높은"멋진 목록을 검색하십시오.

+0

아 좋아. 알아 둘만한. 나는 평론 책을 가지고있다. 그래서 곧이 장을 보게 될 것입니다. 감사. – manu

0

Ok는 문제의 근원을 다소간 발견하고이를 해결하기위한 전략을 변경했습니다.

그것은 적어도 내가 무슨 짓을했는지에 (팽창 할 때의 행 EditText을 좋아하지 않는다 ListView 것 같다. 그래서 난 내 ListView 이전에 한 모든 행의 LinearLayout 전체를 생성하고,로 결과 LinearLayout를 삽입 ScrollView. 이제는 모든 것이 잘 작동합니다. 왜 내가 처음에 어떻게 작동하지 않는지 알 수 없습니다.

관련 문제