Mit Double Werten rechnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mit Double Werten rechnen

    Hallo,
    nach längerer Zeit widme ich mich wieder der Java Programmierung.
    Ich habe das Android Studio wiederendeckt und versuche nun eine App zu erstellen, die Werte Multipliziert. Später sollen noch weitere Funktionen folgen.
    Die Berechnung soll bereits bei der Eingabe geschehen. Soweit klappt das auch. Nur bei Berechnungen mit den Dezimalstellen habe ich so meine Problemchen.
    Die Berechnung findet einfach nicht statt. Da ich dadurch abstürze hatte, habe ich mit try und catch den Fehler abgefangen.

    Ich bin mir nicht sicher, ob der Fehler bei der Variablen Befüllung, Berechnung oder Ausgabe auftritt.
    Durch android:digits="0123456789,." bekomme ich eine Dezimalzahl mit Kommer eingegeben. Aber in der Main Activity fehlt scheinbar noch etwas.

    Hier der Code der XML:
    <EditText
    android:id="@+id/zahl1gew"
    android:layout_width="84dp"
    android:layout_height="wrap_content"
    android:digits="0123456789,."
    android:ems="10"
    android:inputType="numberDecimal" />

    <EditText
    android:id="@+id/zahl1kgpreis"
    android:layout_width="80dp"
    android:layout_height="wrap_content"
    android:digits="0123456789,."
    android:ems="10"
    android:inputType="numberDecimal" />...Und hier die Main Activity:final EditText firstNumber;
    final EditText secondNumber;
    final TextView addResult;

    final double[] num1 = new double[1];
    final double[] num2 = new double[1];
    final double[] sum = new double[1];


    firstNumber = (EditText)findViewById(R.id.zahl1gew);
    secondNumber = (EditText)findViewById(R.id.zahl1kgpreis);
    addResult = (TextView)findViewById(R.id.zahl1preis);num1[0] = Double.parseDouble(firstNumber.getText().toString());
    num2[0] = Double.parseDouble(secondNumber.getText().toString());
    sum[0] = num1[0] * num2[0];
    addResult.setText(Double.toString(sum[0]));
  • Hallo irgendwie kann ich deinem Aufbau nicht folgen.

    final double[] num1 = new double[1];
    final double[] num2 = new double[1];
    final double[] sum = new double[1];

    Warum machst du ein Array und nicht einfach eine einfache double variable?

    double num1 = 1.00;

    Auch ist es nicht sinnvoll für das Array den final Typ zu benutzen.

    Wo ist eigentlich dein Problem?
    Ein Feedback auf Tipps ist auch schön. :P
  • Wenn ich final weglasse bekomme ich eine Fehlermeldung. KA warum aber bei der Verwendung der Vara wird sie rot unterstrichen.

    Ok das eigentlich Problem ist die Berechnung mit Dezimalstellen. 2*3 funktioniert. 2,5*3 funktioniert nicht. Siehe Screenshot
    Bilder
    • Dez.png

      17,82 kB, 359×586, 31 mal angesehen
  • also float oder double benutzen einen Punk und kein Komma. Das sind du doch auch deinem Ergebnis. Der edittext ist ja ein String da musst du auch einen Punkt eingeben damit es auch in ein double geparst werden kann.

    Ansonsten musst du vorher den String selber das Komma in den Punkt wandeln. Schaue dir die Datentypen in Java noch mal an.
    Eventuell mit String Operationen. Daten Typen sind immer mit Punkt.


    Zum Thema final würde mich interessieren wie dein Code wirklich aussiehst.
    Warum machst du überhaupt ein Array und nicht einfach eine primitive variable?

    Kann es sein das du mit Java nicht zurecht kommst .
    Also die Grundlagen nicht beherrschst?
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Also prinzipiel kenn ich schon die Datentypen. Aber mit Strings lässt es sich normalerweise nicht rechnen.
    Eingabe und ausgabe soll unbedingt eine Dezimalzahl mit Komma sein. Am besten noch auf 2 Stellen gerundet aber das ist erst einmal nebensächlich.
    Eigentlich lese ich mit der Funktion ein String aus und konvertiere ihn in eine Double Vara. Ist das richtig?
    Wenn ja, gibt es eventuell eine andere Möglichkeit ein Double Feld auszulesen? Oder gibt es eine Funktion die das umcastet?
    Wenn die Varas hin und her umgewandelt werden, muss die Vara ja auch wieder dementsprechend ausgegeben werden. Das ist dann mit Sicherheit auch wieder eine andere Funktion.

    Ich bin ja wohl nicht der erste der das Problemchen hat.

    Zu meinen Kentnissen habe ich vor Jahren einige Java Grundlagen kennen gelernt. Hauptsächlich habe ich mich dann aber eher mit der Webprogrammierung und Serverkonfiguration beschäftigt.
    Ich finde das Android Studio da schon eine Hilfe, da ich in der Syntax noch nicht so firm bin.
    Hier der Quellcode, ohne Syntaxfehler:

    Quellcode

    1. package com.example.wildkalkulation2;
    2. ...
    3. public class MainActivity extends AppCompatActivity {
    4. /**
    5. * The {@link android.support.v4.view.PagerAdapter} that will provide
    6. * fragments for each of the sections. We use a
    7. * {@link FragmentPagerAdapter} derivative, which will keep every
    8. * loaded fragment in memory. If this becomes too memory intensive, it
    9. * may be best to switch to a
    10. * {@link android.support.v4.app.FragmentStatePagerAdapter}.
    11. */
    12. private SectionsPagerAdapter mSectionsPagerAdapter;
    13. /**
    14. * The {@link ViewPager} that will host the section contents.
    15. */
    16. private ViewPager mViewPager;
    17. @Override
    18. protected void onCreate(Bundle savedInstanceState) {
    19. super.onCreate(savedInstanceState);
    20. setContentView(R.layout.activity_main);
    21. final EditText firstNumber;
    22. final EditText secondNumber;
    23. final TextView addResult;
    24. Button btnAdd;
    25. final double[] num1 = new double[1];
    26. final double[] num2 = new double[1];
    27. final double[] sum = new double[1];
    28. firstNumber = (EditText)findViewById(R.id.zahl1gew);
    29. secondNumber = (EditText)findViewById(R.id.zahl1kgpreis);
    30. addResult = (TextView)findViewById(R.id.zahl1preis);
    31. TextWatcher generalTextWatcher = new TextWatcher() {
    32. @Override
    33. public void onTextChanged(CharSequence s, int start, int before, int count) {
    34. }
    35. @Override
    36. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    37. }
    38. @Override
    39. public void afterTextChanged(Editable s) {
    40. try {
    41. num1[0] = Double.parseDouble(firstNumber.getText().toString());
    42. num2[0] = Double.parseDouble(secondNumber.getText().toString());
    43. sum[0] = num1[0] * num2[0];
    44. addResult.setText(Double.toString(sum[0]));
    45. } catch (NumberFormatException ex) {
    46. // Fehlerbehandlung (Ausgabe an den User per Popup)
    47. System.out.println("num1[0] ist" +num1[0]);
    48. System.out.println("num2[0] ist" +num2[0]);
    49. }
    50. }
    51. };
    52. firstNumber.addTextChangedListener(generalTextWatcher);
    53. secondNumber.addTextChangedListener(generalTextWatcher);
    54. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    55. setSupportActionBar(toolbar);
    56. // Create the adapter that will return a fragment for each of the three
    57. // primary sections of the activity.
    58. mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    59. // Set up the ViewPager with the sections adapter.
    60. mViewPager = (ViewPager) findViewById(R.id.container);
    61. mViewPager.setAdapter(mSectionsPagerAdapter);
    62. FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    63. fab.setOnClickListener(new View.OnClickListener() {
    64. @Override
    65. public void onClick(View view) {
    66. Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
    67. .setAction("Action", null).show();
    68. }
    69. });
    70. }
    71. @Override
    72. public boolean onCreateOptionsMenu(Menu menu) {
    73. // Inflate the menu; this adds items to the action bar if it is present.
    74. getMenuInflater().inflate(R.menu.menu_main, menu);
    75. return true;
    76. }
    77. @Override
    78. public boolean onOptionsItemSelected(MenuItem item) {
    79. // Handle action bar item clicks here. The action bar will
    80. // automatically handle clicks on the Home/Up button, so long
    81. // as you specify a parent activity in AndroidManifest.xml.
    82. int id = item.getItemId();
    83. //noinspection SimplifiableIfStatement
    84. if (id == R.id.action_settings) {
    85. return true;
    86. }
    87. return super.onOptionsItemSelected(item);
    88. }
    89. /**
    90. * A placeholder fragment containing a simple view.
    91. */
    92. public static class PlaceholderFragment extends Fragment {
    93. /**
    94. * The fragment argument representing the section number for this
    95. * fragment.
    96. */
    97. private static final String ARG_SECTION_NUMBER = "section_number";
    98. public PlaceholderFragment() {
    99. }
    100. /**
    101. * Returns a new instance of this fragment for the given section
    102. * number.
    103. */
    104. public static PlaceholderFragment newInstance(int sectionNumber) {
    105. PlaceholderFragment fragment = new PlaceholderFragment();
    106. Bundle args = new Bundle();
    107. args.putInt(ARG_SECTION_NUMBER, sectionNumber);
    108. fragment.setArguments(args);
    109. return fragment;
    110. }
    111. @Override
    112. public View onCreateView(LayoutInflater inflater, ViewGroup container,
    113. Bundle savedInstanceState) {
    114. View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    115. TextView textView = (TextView) rootView.findViewById(R.id.section_label);
    116. textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
    117. return rootView;
    118. }
    119. }
    120. /**
    121. * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
    122. * one of the sections/tabs/pages.
    123. */
    124. public class SectionsPagerAdapter extends FragmentPagerAdapter {
    125. public SectionsPagerAdapter(FragmentManager fm) {
    126. super(fm);
    127. }
    128. @Override
    129. public Fragment getItem(int position) {
    130. // getItem is called to instantiate the fragment for the given page.
    131. // Return a PlaceholderFragment (defined as a static inner class below).
    132. return PlaceholderFragment.newInstance(position + 1);
    133. }
    134. @Override
    135. public int getCount() {
    136. // Show 3 total pages.
    137. return 3;
    138. }
    139. }
    140. }
    Alles anzeigen
  • Also prinzipiel kenn ich schon die Datentypen. Aber mit Strings lässt es sich normalerweise nicht rechnen.


    Richtig mit Strings kann man nicht Rechnen. Du wills den String in das Flies Komma Format Double bringen das ist richtig. Aber es ist eben so dass ein Flies Komma einen Punkt und nicht und nicht das Deutsche Komma benutzt. Somit wird beim Parsen des Strings in ein Double ein Fehler geworfen.

    Entweder du benutzt bei der Eingabe im EditText den Punkt und nicht das Komma.

    Oder du musst in den String das Komma selber zb. In den Punkt ersetzen bevor du es Parst. Zb. Durch String Operationen. Das hatte ich dir aber schon gesagt.

    Umwandeln des Strings in etwa so


    Quellcode

    1. public double parseDecimal(String input) throws ParseException {
    2. NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault());
    3. ParsePosition parsePosition = new ParsePosition(0);
    4. Number number = numberFormat.parse(input, parsePosition);
    5. if(parsePosition.getIndex() != input.length()) {
    6. throw new ParseException("Invalid input", parsePosition.getIndex());
    7. }
    8. return number.doubleValue();
    9. }
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P
  • Habe dein Code nur mal schnell überflogen und frage mich auch wie jogimuc, warum du Arrays statt normalen Variablen nutzt?

    Wie auch schon von jugimuc gesagt, müssen Double-Wert ein Punkt statt Komma haben.


    Java-Quellcode

    1. String test1 = "1,5";
    2. String test2 = "1.5";
    3. double parseTest1 = Double.parseDouble(test1); // FEHLER !
    4. double parseTest2 = Double.parseDouble(test2); // 1,5
    Heißt du muss das Komma durch einen Punkt ersetzt, bevor du in ein double parst.
    Und bei der String-Ausgabe kannst du das wieder umdrehen -> Punkt durch Komma ersetzten.
    Um das ganze passend zu ersetzen kannst du auf den String die replace-methode nutzen.
  • Ok ja mit der replace-methode ist es auch möglich den String umzuwandeln.


    Nur finde ich es über die Methode von mir sinnvoller, den damit wird auf im Handy eingestellte Sprache auch eingegangen. Bei US würde die Methode auch den Punkt benutzen.



    num1[0] = double.parseDouble(firstNumber.getText().toString().replace(",","."));
    würde in Deutsch ok sein aber in Us nicht .

    Xcreen schrieb:

    Habe dein Code nur mal schnell überflogen und frage mich auch wie jogimuc, warum du Arrays statt normalen Variablen nutzt?


    Das liegt daran das er, die Variablen in der onCrate erstellt also lokal und diese in dem Textwatcher benutzen will. Da schlägt das AS meistens vor. Ich hätte da wohl globale Variablen im Klassen Rumpf benutzt. In seinem Fall ist das so richtig.
    Da double ein primitiver Datentyp ist und als final es nicht gehen würde. Das konnte ich in seinem ersten Post nicht sehen.


    Terzel schrieb:

    Wenn ich final weglasse bekomme ich eine Fehlermeldung. KA warum aber bei der Verwendung der Vara wird sie rot unterstrichen.

    nach deinem letzten Code ist es klar warum, denn du willst im Textwatcher auf die lokalen Variablen zugreifen. Eine primitive double als final ist leider auch nicht möglich. Deshalb ist es richtig ein final Array zu benutzen. Hattest du aber erst nicht verraten.

    Am einfachsten währe globale Klassen Variablen zu benutzen.
    Aber das ist ja nicht das Problem was du hast sondern das du in dem EditText ( String ) das Komma benutzt und nicht den Punkt
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von jogimuc ()

  • Super danke
    .replace(",","."));
    und bei der Ausgabe:
    .replace(".",","));
    funktioniert


    Ich habe dann auch noch auf zwei Stellen mit
    sum[0] = Math.round(sum[0]*100)/100.00; gerundetBisl unschöhn sieht es aus wenn die Zahl nur eine Nachkommastelle hat, aber eigentlich ist es nicht so wichtig und funktioniert.Ich habe mir nun überlegt, wie man weiter macht. Auch die Arrays hatte ich dunkel als recht nützlich in Erinnerung. Ich möchte nähmlich eine Tabelle mit Variablen Zeilen erstellen.Also das was ich bisher gemacht habe, ist nur die erste Zeile.
  • Hallo
    eine Ausgabe würde ich so machen.

    Dabei wird auf zb. zwei nach Komma Stellen gerundet und auch wird je nach Eingestellter Sprachedas Komma oder der Punkt benutzt.

    Quellcode

    1. double sum = 1254.12673;
    2. String st = String.format("%.2f",sum); // st = 1254,13 bei deusch , 1254.13 bei US

    dzone.com/articles/java-string-format-examples
    Ein Feedback auf Tipps ist auch schön. :P
  • Ich habe locale for Preview auf Deutsch gestellt und habe trotzdem die Ausgabe mit Punkt bekommen, wenn ich nicht das replace nehme.
    addResult.setText(sumstring[0].replace(".",","));Ich dachte das währe mit deiner Funktion nicht nötig.Um eine weitere Stringvara kommt man wohl nicht rum oder? Bzw ich habe wieder ein Array genommen. Das Zahlenformat sieht so genau richtig aus und funktioniert.
  • Hallo

    Ich glaube das du doch noch einige Grundlagen Probleme mit Java hast.

    Das Beispiel soll dir zeigen wie man einen String formatieren kann mit der format Methode.

    Dafür brauchst du kein replace und auch nicht einen neuen String.

    Das von mir war ein Grundlagen Beispiel und nicht die fertige Lösung. Habe dir auch einen Link mitgegeben hoffe du hast ihn auch gelesen.

    Quellcode

    1. addResult.setText(String.format("%.2f",sum[0]));


    sum[0] ist dein Double Array und kein String


    openbook.rheinwerk-verlag.de/javainsel9/javainsel_04_010.htm
    Ein Feedback auf Tipps ist auch schön. :P
  • Immer wenn ich krank bin, widme ich mich der programmierung :huh:
    Nun weiter im Thread, obwohl es mit dem ursprünglichen Thema wenig zu tun hat.

    Zur Erläuterung was am Ende entstehen soll:
    Es geht um Preiskalkulation.
    Pro Spalte soll folgendes abgebildet werden: Stück, Gewicht, kg Preis, Preis für das Stück, Button für eine Verlinkung an wen es verkauft wird.
    Am Ende eine Spalte mit der Gesamtsumme.

    Die Rows sind Variabel in der Anzahl. Also die Anzahl der Stücke ist nicht vorgegeben und wird mit "Neue Zeile" erweitert
    Die Preise pro Kilo werden sich für den Benutzer eigentlich nicht oder selten ändern. Deswegen währe es schon gut wenn, bei Neustart alles gespeichert wird.
    Außerdem sollte in z.B einer csv Datei die Verkäufe gespeichert werden. Der Button könnte den NAmen aus den Kontakten verknüpfen.

    Soweit bin ich jetzt:
    ich habe mit euer Hilfestellung nun die erste Row im grund funktionsfähig. Mit den Kommerstellen bin ich nun klar gekommen.
    Die Intension, des Array dachte ich, kann man für die Anzahl der Rows benutzen.

    So nun habe ich folgenden Code gefunden um Zeilen zuzufügen:

    Quellcode

    1. private Context context = null;
    2. @Override
    3. protected void onCreate(Bundle savedInstanceState) {
    4. super.onCreate(savedInstanceState);
    5. setContentView(R.layout.activity_main);
    6. setTitle("dev2qa.com - Android Table Layout Example.");
    7. // Get TableLayout object in layout xml.
    8. final TableLayout tableLayout = (TableLayout)findViewById(R.id.row1);
    9. context = getApplicationContext();
    10. // Get add table row button.
    11. Button addRowButton = (Button)findViewById(R.id.addrowbutton);
    12. addRowButton.setOnClickListener(new View.OnClickListener() {
    13. @Override
    14. public void onClick(View v) {
    15. // Create a new table row.
    16. TableRow tableRow = new TableRow(context);
    17. // Set new table row layout parameters.
    18. TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
    19. tableRow.setLayoutParams(layoutParams);
    20. // Add a TextView in the first column.
    21. TextView textView = new TextView(context);
    22. textView.setText("This is the ");
    23. tableRow.addView(textView, 0);
    24. // Add a button in the second column
    25. Button button = new Button(context);
    26. button.setText("New Row");
    27. tableRow.addView(button, 1);
    28. // Add a checkbox in the third column.
    29. CheckBox checkBox = new CheckBox(context);
    30. checkBox.setText("Check it");
    31. tableRow.addView(checkBox, 2);
    32. tableLayout.addView(tableRow);
    33. }
    34. });
    35. // Get delete table row button.
    36. Button deleteRowButton = (Button)findViewById(R.id.delrowbutton);
    37. deleteRowButton.setOnClickListener(new View.OnClickListener() {
    38. @Override
    39. public void onClick(View v) {
    40. // Get table row count.
    41. int rowCount = tableLayout.getChildCount();
    42. // Save delete row number list.
    43. List<Integer> deleteRowNumberList = new ArrayList<Integer>();
    44. // Loope each table rows.
    45. for(int i =0 ;i < rowCount;i++)
    46. {
    47. // Get table row.
    48. View rowView = tableLayout.getChildAt(i);
    49. if(rowView instanceof TableRow)
    50. {
    51. TableRow tableRow = (TableRow)rowView;
    52. // Get row column count.
    53. int columnCount = tableRow.getChildCount();
    54. // Loop all columns in row.
    55. for(int j = 0;j<columnCount;j++)
    56. {
    57. View columnView = tableRow.getChildAt(j);
    58. if(columnView instanceof CheckBox)
    59. {
    60. // If columns is a checkbox and checked then save the row number in list.
    61. CheckBox checkboxView = (CheckBox)columnView;
    62. if(checkboxView.isChecked())
    63. {
    64. deleteRowNumberList.add(i);
    65. break;
    66. }
    67. }
    68. }
    69. }
    70. }
    71. // Remove all rows by the selected row number.
    72. for(int rowNumber :deleteRowNumberList)
    73. {
    74. tableLayout.removeViewAt(rowNumber);
    75. }
    76. }
    77. });
    Alles anzeigen
    Wie bastel ich da nun meinen Code rein.
    Ihrgendwie kann ich die Arrays mit "i" row für row benutzen. Nur mir fehlt das "wie füge ich was ein".
    Die Onclick View Funktion habe ich erstmal ursprünglich gelassen. Ich kann meinen Code aber auch nicht einfach so einfügen, wegen dem "i".
    Bilder
    • tabelle.png

      10,25 kB, 451×202, 12 mal angesehen
  • Hallo ich glaube du bringst Array und Liste etwas durch einander. Oder dir ist der Unterschied nicht klar.

    In dem gefunden Quellcode wird eine "Liste" oder auch "Array Liste" benutz und nicht ein Array wie bei deinem Code.

    Der haupt unterschied ist das ein Array[] statisch ist also zur Laufzeit des Programms sich die größte nicht ändern kann. Wenn du zb ein
    Array[10] erstellst dann kannst du nicht Felder Laufzeit hinzufügen. Es sind immer 10.

    Eine Liste ist ein dynamischer Speicher Bereich "eine verkettete Liste" die du zu Laufzeit erweitern und auch löschen kannst.

    Schaue die die Unterschiede in Java noch mal an.
    Ein Feedback auf Tipps ist auch schön. :P
  • Ich empfand statische Arrays nie so richtig praktisch und in dem Fall ungeeignet. Nach deiner Aussage benutze ich bereits eine Array Liste, also genau das was ich brauche. Aber bitte korrigiere mich wenn ich mich irre.

    Das erstellen der Rows funktioniert soweit. Nur kann ich keine mehr löschen und ich weiß nicht weshalb. Bastel da schon eine Weile rum.


    Davon abgesehen bin ich auch am überlegen, ob ich mich dem Speicherproblem langsam widme. Also werden beim schließen der App die Zeilen gespeichert? Im Moment nicht, aber später?

    Gruß und Dank
  • hallo

    Ich empfand statische Arrays nie so richtig praktisch und in dem Fall ungeeignet. Nach deiner Aussage benutze ich bereits eine Array Liste
    das was du in deinen ersten postings hast ist keine Liste.
    Der Code in post 13 benutzt eine Liste. Wie du nun deinen Code dort rein gebastelt hast wissen wir nicht.
    Um eine richtige aussage machen zu können zeige deinen jetzigen Code.
    Ohne gibt es keine Hilfe.
    Ein Feedback auf Tipps ist auch schön. :P
  • Kommt sofort.
    Hier die Funktion zum Löschen der Row:

    Quellcode

    1. // Get delete table row button.
    2. Button deleteRowButton = (Button) findViewById(R.id.delrowbutton);
    3. deleteRowButton.setOnClickListener(new View.OnClickListener() {
    4. @Override
    5. public void onClick(View v) {
    6. // Get table row count.
    7. int rowCount = tableLayout.getChildCount();
    8. // Save delete row number list.
    9. List<Integer> deleteRowNumberList = new ArrayList<Integer>();
    10. // Loope each table rows.
    11. for (int i = 0; i < rowCount; i++) {
    12. // Get table row.
    13. View rowView = tableLayout.getChildAt(i);
    14. if (rowView instanceof TableRow) {
    15. TableRow tableRow = (TableRow)rowView;
    16. // Get row column count.
    17. int columnCount = tableRow.getChildCount();
    18. // Loop all columns in row.
    19. for (int j = 0; j < columnCount; j++) {
    20. View columnView = tableRow.getChildAt(j);
    21. if (columnView instanceof CheckBox) {
    22. // If columns is a checkbox and checked then save the row number in list.
    23. CheckBox checkboxView = (CheckBox) columnView;
    24. if (checkboxView.isChecked()) {
    25. deleteRowNumberList.add(i);
    26. break;
    27. }
    28. }
    29. }
    30. }
    31. }
    32. // Remove all rows by the selected row number.
    33. for (int rowNumber :deleteRowNumberList) {
    34. tableLayout.removeViewAt(rowNumber);
    35. }
    36. }
    37. });
    Alles anzeigen
  • der code ist der gleiche ohne eine änderung wie in Post 13.

    was soll ich damit wo ist das Problem?


    Das erstellen der Rows funktioniert soweit. Nur kann ich keine mehr löschen und ich weiß nicht weshalb. Bastel da schon eine Weile rum.
    ja wie sieht den deine liste aus?

    was speicherst du in der liste und wie......?
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Also Add Row funktioniert soweit. Ich überlege, ob man die Default werte noch ändert. Default ist es Text, wenn ich es eingebe wird es zum double Wert und es rechnet richtig.

    Quellcode

    1. addRowButton.setOnClickListener(new View.OnClickListener() {
    2. @Override
    3. public void onClick(View v) {
    4. // Create a new table row.
    5. TableRow tableRow = new TableRow(context);
    6. // Set new table row layout parameters.
    7. TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
    8. tableRow.setLayoutParams(layoutParams);
    9. // Add a TextView in the first column.
    10. EditText editText1 = new EditText(context);
    11. editText1.setText("Stück");
    12. tableRow.addView(editText1, 0);
    13. final EditText firstNumber2 = new EditText(context);
    14. firstNumber2.setText("1");
    15. final double[] num1 = new double[1];
    16. //firstNumber2 = (EditText)findViewById(R.id.zahl1gew);
    17. tableRow.addView(firstNumber2, 1);
    18. final double[] sum = new double[1];
    19. final String[] sumstring = new String[1];
    20. final EditText secondNumber2 = new EditText(context);
    21. secondNumber2.setText("1");
    22. final double[] num2 = new double[1];
    23. tableRow.addView(secondNumber2, 2);
    24. final TextView addResult2 = new TextView(context);
    25. addResult2.setText("2");
    26. //final double[] num3 = new double[1];
    27. tableRow.addView(addResult2, 3);
    28. Button button = new Button(context);
    29. button.setText("verkauft");
    30. tableRow.addView(button, 4);
    31. //final TextView addResult;
    32. //addResult = (TextView)findViewById(R.id.zahl1preis);
    Alles anzeigen