Improved GUI

This commit is contained in:
Juan Miguel Boyero Corral 2011-06-15 13:11:40 +02:00
parent da4c42cc26
commit 79f2e4e201
3 changed files with 71 additions and 6 deletions

View File

@ -176,8 +176,6 @@ public class SWADMain extends ExpandableListActivity {
} else if(keyword.equals(getString(R.string.testsModuleLabel))) {
activity = new Intent(getBaseContext(), Tests.class);
startActivityForResult(activity, Global.TESTS_REQUEST_CODE);
/*Toast.makeText(this, keyword + " en proceso de desarrollo", Toast.LENGTH_LONG)
.show();*/
}
return true;

View File

@ -25,11 +25,14 @@ import es.ugr.swad.swadroid.model.TestAnswer;
import android.content.Context;
import android.graphics.Color;
import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ListView;
public class CheckedAnswersArrayAdapter extends ArrayAdapter<TestAnswer> {
private Context context;
@ -56,6 +59,8 @@ public class CheckedAnswersArrayAdapter extends ArrayAdapter<TestAnswer> {
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CheckedTextView tt;
final ListView lv = (ListView) parent;
TestAnswer a = items.get(position);
if (convertView == null) {
@ -63,7 +68,7 @@ public class CheckedAnswersArrayAdapter extends ArrayAdapter<TestAnswer> {
convertView = vi.inflate(textViewResourceId, null);
}
CheckedTextView tt = (CheckedTextView) convertView.findViewById(android.R.id.text1);
tt = (CheckedTextView) convertView.findViewById(android.R.id.text1);
if(answerType.equals("TF")) {
if(a.getAnswer().equals("T")) {
tt.setText(R.string.trueMsg);
@ -74,6 +79,26 @@ public class CheckedAnswersArrayAdapter extends ArrayAdapter<TestAnswer> {
tt.setText(Html.fromHtml(a.getAnswer()));
}
if(lv.getChoiceMode() == ListView.CHOICE_MODE_SINGLE) {
tt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
CheckedTextView rb = (CheckedTextView) v;
int childCount = lv.getChildCount();
int itemPos = 0;
boolean checked = rb.isChecked();
for(int i=0; i<childCount; i++) {
lv.setItemChecked(i, false);
if(rb == lv.getChildAt(i)) {
itemPos = i;
}
}
lv.setItemChecked(itemPos, !checked);
}
});
}
if(evaluated) {
tt.setOnClickListener(null);

View File

@ -38,6 +38,8 @@ import android.text.InputType;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckedTextView;
@ -105,6 +107,10 @@ public class TestsMake extends Module {
* Click listener for courses dialog cancel button
*/
private OnClickListener coursesDialogNegativeClickListener;
/**
* Click listener for courses dialog cancel button
*/
private OnItemClickListener tagsAnswersTypeItemClickListener;
/**
* Adapter for answer TF questions
*/
@ -188,6 +194,7 @@ public class TestsMake extends Module {
tagsAdapter = new TagsArrayAdapter(this, R.layout.list_item_multiple_choice, allTagsList);
checkBoxesList.setAdapter(tagsAdapter);
checkBoxesList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
checkBoxesList.setOnItemClickListener(tagsAnswersTypeItemClickListener);
acceptButton = (Button)findViewById(R.id.testTagsAcceptButton);
acceptButton.setOnClickListener(new View.OnClickListener() {
@ -241,6 +248,7 @@ public class TestsMake extends Module {
R.array.testAnswerTypesNames, R.layout.list_item_multiple_choice);
checkBoxesList.setAdapter(answerTypesAdapter);
checkBoxesList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
checkBoxesList.setOnItemClickListener(tagsAnswersTypeItemClickListener);
acceptButton = (Button)findViewById(R.id.testAnswerTypesAcceptButton);
acceptButton.setOnClickListener(new View.OnClickListener() {
@ -396,10 +404,12 @@ public class TestsMake extends Module {
}
questionScore = test.getQuestionScore(pos);
if(questionScore >= 0.5) {
if(questionScore > 0) {
score.setTextColor(getResources().getColor(R.color.green));
} else {
} else if(questionScore < 0) {
score.setTextColor(getResources().getColor(R.color.red));
} else {
score.setTextColor(Color.BLACK);
}
score.setText(df.format(questionScore));
@ -571,7 +581,7 @@ public class TestsMake extends Module {
+ df.format(scoreDec) + "/10");
if(scoreDec < 5) {
textView.setTextColor(Color.RED);
textView.setTextColor(getResources().getColor(R.color.red));
}
bt = (Button) findViewById(R.id.testResultsButton);
@ -657,6 +667,38 @@ public class TestsMake extends Module {
finish();
}
};
tagsAnswersTypeItemClickListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
CheckedTextView chk = (CheckedTextView) v;
ListView lv = (ListView) parent;
int childCount = lv.getCount();
SparseBooleanArray checkedItems = lv.getCheckedItemPositions();
int checkedItemsCount = checkedItems.size();
boolean allChecked = true;
if(position == 0) {
for(int i=1; i<childCount; i++) {
lv.setItemChecked(i, !chk.isChecked());
}
} else {
if(chk.isChecked()) {
lv.setItemChecked(0, false);
}
for(int i=1; i<checkedItemsCount; i++) {
if(!checkedItems.get(i, false)) {
allChecked = false;
}
}
if (allChecked) {
lv.setItemChecked(0, true);
}
}
}
};
coursesDialog = new AlertDialog.Builder(this);
coursesDialog.setTitle(R.string.selectCourseTitle);