Skip to content

Commit fbbb1e1

Browse files
Adjust test results display to render to a ListView with color
1 parent 95ee1cc commit fbbb1e1

File tree

5 files changed

+91
-12
lines changed

5 files changed

+91
-12
lines changed

res/layout/main.xml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,9 @@
1313
android:text="@string/test_suite_button"
1414
android:onClick="onButtonClick"/>
1515
</LinearLayout>
16-
<TextView
16+
<ListView
1717
android:id="@+id/test_suite_results"
1818
android:layout_width="fill_parent"
1919
android:layout_height="fill_parent"
20-
android:gravity="top|left"
21-
android:scrollbars="vertical"
22-
android:singleLine="false"
2320
android:layout_below="@+id/container"/>
2421
</RelativeLayout>

res/layout/test_result_row.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
4+
android:orientation="vertical"
5+
android:layout_width="fill_parent"
6+
android:layout_height="fill_parent">
7+
<TextView android:id="@+id/test_status"
8+
android:layout_height="wrap_content"
9+
android:layout_width="wrap_content"
10+
android:padding="5dip"
11+
android:gravity="right"
12+
android:textSize="18sp"
13+
android:layout_alignParentRight="true"/>
14+
<TextView android:id="@+id/test_name"
15+
android:layout_height="wrap_content"
16+
android:layout_width="fill_parent"
17+
android:paddingTop="5dip"
18+
android:gravity="left"
19+
android:textSize="18sp"
20+
android:singleLine="true"
21+
android:ellipsize="end"
22+
android:layout_toLeftOf="@+id/test_status"/>
23+
</RelativeLayout>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package net.zetetic;
2+
3+
import android.content.Context;
4+
import android.graphics.Color;
5+
import android.view.LayoutInflater;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
import android.widget.ArrayAdapter;
9+
import android.widget.TextView;
10+
import net.zetetic.tests.TestResult;
11+
12+
import java.util.List;
13+
14+
public class TestResultAdapter extends ArrayAdapter<TestResult> {
15+
16+
public TestResultAdapter(Context context, List<TestResult> results) {
17+
super(context, 0, results);
18+
}
19+
20+
@Override
21+
public View getView(int position, View view, ViewGroup parent) {
22+
23+
ViewHolder holder;
24+
if(view == null){
25+
LayoutInflater viewInflater = (LayoutInflater) ZeteticApplication.getInstance().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
26+
view = viewInflater.inflate(R.layout.test_result_row, null);
27+
holder = new ViewHolder();
28+
holder.testName = (TextView) view.findViewById(R.id.test_name);
29+
holder.testStatus = (TextView) view.findViewById(R.id.test_status);
30+
view.setTag(holder);
31+
} else {
32+
holder = (ViewHolder)view.getTag();
33+
}
34+
TestResult result = getItem(position);
35+
holder.testName.setText(result.getName());
36+
holder.testStatus.setText(result.toString());
37+
int displayColor = result.isSuccess() ? Color.GREEN : Color.RED;
38+
holder.testStatus.setTextColor(displayColor);
39+
return view;
40+
}
41+
42+
static class ViewHolder {
43+
TextView testName;
44+
TextView testStatus;
45+
}
46+
}

src/main/java/net/zetetic/TestSuiteActivity.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,26 @@
22

33
import android.app.Activity;
44
import android.os.Bundle;
5-
import android.text.method.ScrollingMovementMethod;
65
import android.util.Log;
76
import android.view.View;
8-
import android.widget.TextView;
7+
import android.widget.ArrayAdapter;
8+
import android.widget.ListView;
99
import net.zetetic.tests.ResultNotifier;
1010
import net.zetetic.tests.TestResult;
1111
import net.zetetic.tests.TestSuiteRunner;
1212

13+
import java.util.ArrayList;
14+
import java.util.List;
15+
1316
public class TestSuiteActivity extends Activity implements ResultNotifier {
1417

1518
private static String TAG = "net.zetetic.sqlcipher.test";
16-
TextView resultsView;
19+
ListView resultsView;
20+
List<TestResult> results;
21+
22+
public TestSuiteActivity(){
23+
results = new ArrayList<TestResult>();
24+
}
1725

1826
@Override
1927
public void onCreate(Bundle savedInstanceState) {
@@ -25,15 +33,21 @@ public void onCreate(Bundle savedInstanceState) {
2533
public void onButtonClick(View view) {
2634

2735
findViewById(R.id.executeSuite).setEnabled(false);
28-
resultsView = (TextView) findViewById(R.id.test_suite_results);
29-
resultsView.setMovementMethod(ScrollingMovementMethod.getInstance());
36+
resultsView = (ListView) findViewById(R.id.test_suite_results);
3037
ZeteticApplication.getInstance().setCurrentActivity(this);
3138
new TestSuiteRunner().execute(this);
3239
}
3340

3441
@Override
3542
public void send(TestResult result) {
36-
resultsView.append(result.toString());
43+
44+
results.add(result);
45+
ArrayAdapter<TestResult> adapter = (ArrayAdapter<TestResult>) resultsView.getAdapter();
46+
if(adapter == null){
47+
resultsView.setAdapter(new TestResultAdapter(ZeteticApplication.getInstance(), results));
48+
} else {
49+
adapter.notifyDataSetChanged();
50+
}
3751
}
3852

3953
@Override

src/main/java/net/zetetic/tests/TestResult.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public boolean isSuccess() {
2424

2525
@Override
2626
public String toString() {
27-
String status = isSuccess() ? "OK" : "FAILED";
28-
return String.format("%s : %s\n", getName(), status);
27+
return isSuccess() ? "OK" : "FAILED";
2928
}
3029
}

0 commit comments

Comments
 (0)