0

配列の形式で Web サービスからデータを取得するアプリがあります。アダプターの getView() で、配列内の要素に TextViews を設定します。配列は recordItem と呼ばれ、さまざまな要素があり、そのうちの 1 つは「ステータス」です。Status は、完了、ncr、または待機中の文字列です。値が完了した状態でリストビューにTextViewを直接設定した場合、ncrまたは待機は問題ありません。

テキストビューに完全な文字列を表示したくはありませんが、代わりに C、NCR、または W を表示します。配列要素をチェックし、テキストビューをそれぞれの文字に設定する一連の「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>
4

1 に答える 1

0

recordItem[2] には、trim() 呼び出しが必要でした。.equals は、このため文字列を拾いません。

于 2012-09-26T14:29:42.553 に答える