relativelayout - Dynamically adding elements to android relative layout -
i having little problem relative layouts. i'm doing project in have read values .csv file , display them dynamically in relative layout. i'll put couple of code snippets , images , explain problem.
first code snippet:
package ekalavya.pratnala.quiz; import java.io.bufferedreader; import java.io.file; import java.io.filereader; import java.util.stringtokenizer; import android.app.activity; import android.os.bundle; import android.view.viewgroup.layoutparams; import android.widget.imageview; import android.widget.relativelayout; import android.widget.scrollview; public class quizactivity extends activity { /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // beginning of variable declarations file quizspecs = new file("mnt/sdcard/teacher.csv"); // read file bufferedreader csvreader = null; string line = ""; // storing each line in string stringtokenizer currentline = null; int noofquestions = 0; // number of questions in quiz int time = 0; // duration of quiz int[][] quizdata; // storing quiz specifications in integer array int = 0, j = 0; // loop variables int[][] questionimages = { { r.drawable.a, r.drawable.b, r.drawable.c, r.drawable.d, r.drawable.e, r.drawable.f, r.drawable.g, r.drawable.h, r.drawable.i, r.drawable.j }, { r.drawable.a_checked, r.drawable.b_checked, r.drawable.c_checked, r.drawable.d_checked, r.drawable.e_checked, r.drawable.f_checked, r.drawable.g_checked, r.drawable.h_checked, r.drawable.i_checked, r.drawable.j_checked }, { r.drawable.zero, r.drawable.one, r.drawable.two, r.drawable.three, r.drawable.four, r.drawable.five, r.drawable.six, r.drawable.seven, r.drawable.eight, r.drawable.nine }, { r.drawable.zero_checked, r.drawable.one_checked, r.drawable.two_checked, r.drawable.three_checked, r.drawable.four_checked, r.drawable.five_checked, r.drawable.six_checked, r.drawable.seven_checked, r.drawable.eight_checked, r.drawable.nine_checked } }; // end of variable declarations try { csvreader = new bufferedreader(new filereader(quizspecs)); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { line = csvreader.readline(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } currentline = new stringtokenizer(line, ","); noofquestions = integer.parseint(currentline.nexttoken()); time = integer.parseint(currentline.nexttoken()); while (currentline.hasmoretokens()) ; quizdata = new int[noofquestions][6]; (i = 0; < noofquestions; i++) { try { line = csvreader.readline(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } currentline = new stringtokenizer(line, ","); (j = 0; j < 6; j++) { quizdata[i][j] = integer.parseint(currentline.nexttoken()); } } try { csvreader.close(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } scrollview s1 = new scrollview(this); relativelayout r1 = new relativelayout(this); (i = 0; < 2; i++) { switch (quizdata[i][1]) { case 1: case 2: (j = 0; j < quizdata[i][2]; j++) { imageview option = new imageview(this); option.setimageresource(questionimages[0][j]); option.setid(j + (10 * (i + 1))); relativelayout.layoutparams params = new relativelayout.layoutparams( relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); params.addrule(relativelayout.right_of, j - 1 + (10 * (i + 1))); option.setlayoutparams(params); r1.addview(option, params); } break; } } s1.addview(r1, new layoutparams(layoutparams.fill_parent, layoutparams.fill_parent)); this.setcontentview(s1); } }
image 1: https://www.dropbox.com/s/vzpilyotvgtipbb/pic2.png
second code snippet:
package ekalavya.pratnala.quiz; import java.io.bufferedreader; import java.io.file; import java.io.filereader; import java.util.stringtokenizer; import android.app.activity; import android.os.bundle; import android.view.viewgroup.layoutparams; import android.widget.imageview; import android.widget.relativelayout; import android.widget.scrollview; public class quizactivity extends activity { /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // beginning of variable declarations file quizspecs = new file("mnt/sdcard/teacher.csv"); // read file bufferedreader csvreader = null; string line = ""; // storing each line in string stringtokenizer currentline = null; int noofquestions = 0; // number of questions in quiz int time = 0; // duration of quiz int[][] quizdata; // storing quiz specifications in integer array int = 0, j = 0; // loop variables int[][] questionimages = { { r.drawable.a, r.drawable.b, r.drawable.c, r.drawable.d, r.drawable.e, r.drawable.f, r.drawable.g, r.drawable.h, r.drawable.i, r.drawable.j }, { r.drawable.a_checked, r.drawable.b_checked, r.drawable.c_checked, r.drawable.d_checked, r.drawable.e_checked, r.drawable.f_checked, r.drawable.g_checked, r.drawable.h_checked, r.drawable.i_checked, r.drawable.j_checked }, { r.drawable.zero, r.drawable.one, r.drawable.two, r.drawable.three, r.drawable.four, r.drawable.five, r.drawable.six, r.drawable.seven, r.drawable.eight, r.drawable.nine }, { r.drawable.zero_checked, r.drawable.one_checked, r.drawable.two_checked, r.drawable.three_checked, r.drawable.four_checked, r.drawable.five_checked, r.drawable.six_checked, r.drawable.seven_checked, r.drawable.eight_checked, r.drawable.nine_checked } }; // end of variable declarations try { csvreader = new bufferedreader(new filereader(quizspecs)); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { line = csvreader.readline(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } currentline = new stringtokenizer(line, ","); noofquestions = integer.parseint(currentline.nexttoken()); time = integer.parseint(currentline.nexttoken()); while (currentline.hasmoretokens()) ; quizdata = new int[noofquestions][6]; (i = 0; < noofquestions; i++) { try { line = csvreader.readline(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } currentline = new stringtokenizer(line, ","); (j = 0; j < 6; j++) { quizdata[i][j] = integer.parseint(currentline.nexttoken()); } } try { csvreader.close(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } scrollview s1 = new scrollview(this); relativelayout r1 = new relativelayout(this); (i = 0; < 1; i++) { switch (quizdata[i][3]) { case 1: case 2: (j = 0; j < quizdata[i][2]; j++) { imageview option = new imageview(this); option.setimageresource(questionimages[0][j]); option.setid(j + (10 * (i + 1))); relativelayout.layoutparams params = new relativelayout.layoutparams( relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); params.addrule(relativelayout.right_of, j - 1 + (10 * (i + 1))); option.setlayoutparams(params); r1.addview(option, params); } break; } } s1.addview(r1, new layoutparams(layoutparams.fill_parent, layoutparams.fill_parent)); this.setcontentview(s1); } }
image 2: https://www.dropbox.com/s/itazcpshjzbza4t/pic1.png
when loop in switch case variable 'i' run once, second output comes. , if run twice, first output comes. that's not want. want first output row show below second output row. know wrong in code don't know how rectify it. please me! also, want know how place elements anywhere on screen.
p.s. haven't been allowed upload images because reputation less 10 (i'm newbie here). so, put them on dropbox , have put links here. sorry inconvenience.
i have solved this: specified right_of
property before , hence didn't know place vertically , put @ top. specifying below
property fixed issue.
Comments
Post a Comment