2013-07-01 3 views
0

에 글고에서 텍스트를 타고 나는이 같은 ViewHolder에 글고 치기에 포함 된 텍스트를 수행해야합니다ViewHolder 안드로이드

@Override 
      public void onClick(View v) { 

       holder.editTextComment = (EditText) v 
         .findViewById(R.id.editTextComment); 
       String comment = holder.editTextComment.getText() 
         .toString(); 
       // String comment = new String("lol"); 
       Calendar c = Calendar.getInstance(); 
       SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyy"); 
       SimpleDateFormat dt = new SimpleDateFormat("HH:mm"); 
       String formattedDate = df.format(c.getTime()); 
       String formattedTime = dt.format(c.getTime()); 

       if (!comment.equalsIgnoreCase("")) { 
        switch (v.getId()) { 
        case R.id.buttonPostComment: 
         addItem(comment, formattedDate, formattedTime, v, 
           holder); 
         break; 
        } 
       } 

하지만 내 프로그램이 충돌 내가 문자열로는 EditText 텍스트를 삽입 할 때, 왜?

+1

logcat. 당신이 가지고있는 것을 보면서, 당신의'editTextComment'가'null'이라고 말할 것입니다. 'v.findViewById (...) '에서'v'를 제거해보십시오. – codeMagic

+0

'getText()'를 호출하면'holder' 또는'holder.editTextComment'가 null이 될 것입니다. –

+0

http://pastebin.com/5nrtsYuC – hasmet

답변

1

다음 코드가 EditText을 반환합니까?

(EditText) v.findViewById(R.id.editTextComment); 

내 생각 엔 그냥, nullholder.editTextComment를 설정하여 그것에 .getText().toString()을하고시 NullPointerException 렌더링 있다는 것이다.

holder.editTextComment = (EditText) findViewById(R.id.editTextComment); 

EditText이 줄

holder.editTextComment = (EditText) v 
        .findViewById(R.id.editTextComment); 

을 변경

+1

덧글에이 내용을 추가하고 여기에 추측 작업을하는 것보다 더 명확하게 OS를 요청해야합니다. – CRUSADER

+0

Ninetwozero에 의하면 ..... 코드가 null을 반환했습니다. 뷰 v가 올바르지 않기 때문입니다. ninetwozero 및 codeMagin 덕분에 – hasmet

+0

@CRUSADER : OP 버전을 확인하면 추측하지 않습니까? ;-) – ninetwozero

2

보십시오 당신이 v가 무엇을 나타내는 지 어느 클릭 그 Button 안에 포함되지 않습니다. layoutsetContentView()으로 부 풀려 야 할 경우 v을 삭제하면 효과가 있습니다. 당신이 inflater를 사용하는 경우, 당신이 그것에 getText()를 호출 할 때 그래서 당신은 NPE을 받고 holder.editTextComment에 대한 null을 반환하는 것을 당신은 당신이 v

대신에 팽창 어떤 layout 사용할 수 있습니다.

+0

이 코드는 인포 더 (v)가 – hasmet

+0

인 getView에 삽입 되었기 때문에 삽입 할 수 없습니다. 그러면 인포 인트 인'getView()'의 변수를 변경하십시오. 그것이 의미하는 바대로, 아마도'v'를 스코프 때문에 클릭 된'View'로 사용했을 것입니다 – codeMagic

관련 문제