2012-09-26 62 views
0

我有一個應用程序以數組的形式從webservice中檢索數據。在適配器的getView()中,我將TextViews設置爲數組中的元素。該數組稱爲recordItem,並具有各種元素之一,即「狀態」。狀態是一個可以完成,ncr或等待的字符串。如果我直接在列表視圖中設置TextView的完成值,ncr或等待沒有問題。ListView中的TextView未從CustomAdapter中設置

我不想在textview中顯示完整的字符串,而是顯示C,NCR或W來代替。我有一系列「if語句」檢查數組元素,然後將textview設置爲相應的字符。

問題是沒有顯示字符。爲什麼?

@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 Hi用xml更新了帖子 – turtleboy

+0

好的,這一行:Log.e(TAG,「statusField =」+ statusField); 返回正確的狀態? – Pasha

回答

0

recordItem [2]需要trim()調用它。 .equals不會因爲這個而選擇字符串。

相關問題