2012-09-26 4 views
0

배열 형식으로 웹 서비스에서 데이터를 검색하는 앱이 있습니다. 어댑터의 getView()에서 배열의 요소에 TextViews를 설정합니다. 이 배열은 recordItem이라고 불리우며 그 중 하나는 "상태"입니다. Status는 완료, NCR 또는 대기 중 하나 일 수있는 문자열입니다. listview에서 TextView를 완료된 값으로 직접 설정하면 ncr 또는 기다리는 것이 아무런 문제가되지 않습니다.ListView의 TextView가 CustomAdapter에서 설정되지 않습니다.

텍스트 뷰에 전체 문자열을 표시하지 않고 대신 C, NCR 또는 W를 표시합니다. 배열 요소를 확인한 다음 해당 문자를 textview로 설정하는 일련의 "if 문"이 있습니다.

문제는 문자가 표시되지 않는 것입니다. 왜?

@Override 
     public View getView(int position, View convertView, ViewGroup parent) { 


      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      View rowView = inflater.inflate(R.layout.rotarowlayout, parent, 
        false); 

      TextView startTime = (TextView) rowView 
        .findViewById(R.id.rowstarttime); 
      TextView duration = (TextView) rowView 
        .findViewById(R.id.rowduration); 
      TextView status = (TextView) rowView.findViewById(R.id.rowstatus); 
      TextView name = (TextView) rowView.findViewById(R.id.rowclientname); 

      String record = list.get(position).toString(); 
      String[] itemsInRecord = record.split(","); 
      Log.e(TAG, "itemin record = " + itemsInRecord.length); 
      String[] recordItem = new String[itemsInRecord.length]; 

      for (int x = 0; x < itemsInRecord.length; x++) { 

       recordItem[x] = itemsInRecord[x]; 
       Log.e(TAG, "x = " + x); 
      } 

      String withoutBraket = recordItem[0].substring(11); 
      String withoutSecs = withoutBraket.substring(0, 6); 

      Log.e(TAG, "recordItem = " + recordItem[2]); 


      if(recordItem[2].toString().equalsIgnoreCase("Completed")){ 

       statusField = "c"; 

      }else if(recordItem[2].toString().equalsIgnoreCase("NCR")){ 

       statusField = "NCR"; 

      }else if(recordItem[2].toString().equalsIgnoreCase("Waiting")){ 

       statusField = "W"; 
      } 

      Log.e(TAG, "statusField = " + statusField); 

      startTime.setText(withoutSecs); 
      duration.setText(recordItem[1]); 
      status.setText(statusField); 
      name.setText(recordItem[3] + recordItem[4]); 
      callID = recordItem[5]; 
      needName = recordItem[6]; 

      return rowView; 

     } 

.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" > 

     <TextView 
      android:id="@+id/rowstarttime" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" /> 

     <TextView 
      android:id="@+id/rowduration" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="10dp" > 

     <TextView 
      android:id="@+id/rowstatus" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" /> 

     <TextView 
      android:id="@+id/rowclientname" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

</LinearLayout> 
+0

행 레이아웃 xml을 게시 할 수 있습니까? – Pasha

+0

@Pasha 안녕하세요, xml – turtleboy

+0

으로 게시물을 업데이트했습니다. Ok, 다음 행 : Log.e (TAG, "statusField ="+ statusField); 올바른 상태로 반환 하시겠습니까? – Pasha

답변

0

recordItem [2] 필요한 trim() .이 때문에 문자열을 선택하지 않습니다.

관련 문제