Problem beim Eintragen von einem Symbol in eine ListView

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

  • Problem beim Eintragen von einem Symbol in eine ListView

    Hallo zusammen :)

    ich versuche mich gerade an meiner ersten eigenen App bin also noch relativ neu in android.

    Bei der App kann man Geld Einnahme/Ausgaben über ein AlertDialog in ein ListView(sqlite) hinzufügen.
    Soweit funktioniert es auch mit Betrag,Notiz und Datum, jetzt möcht ich aber noch ein Symbol(ImageView) mit einer RadioGroup eintragen( + und -) in die ListView.

    hier ein bild wie die App zur zeit ausschaut (über das Datum soll das Symbol eingefügt werden)
    dropbox.com/s/go0mkqkpk57mmta/ga_app.png
    dropbox.com/s/01i1zgztv1k8tax/alertdialog.png

    sobald ich auf hinzufügen geh schmeißt er ne NullPointerException

    nach langem suchen und rumprobieren weiß ich echt nicht mehr wo der fehler sein könnte, vll bin ich einfach nur blind. :(

    ich hoffe mir kann jemand helfen :)



    hier Auszug ausm LogCat:


    HTML-Quellcode

    1. 05-08 13:48:27.759: D/AndroidRuntime(18368): Shutting down VM
    2. 05-08 13:48:27.759: W/dalvikvm(18368): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
    3. 05-08 13:48:27.780: E/AndroidRuntime(18368): FATAL EXCEPTION: main
    4. 05-08 13:48:27.780: E/AndroidRuntime(18368): java.lang.NullPointerException
    5. 05-08 13:48:27.780: E/AndroidRuntime(18368): at de.darioc.geldausgaben.LvCursorAdapter$2$2.onClick(LvCursorAdapter.java:174)
    6. 05-08 13:48:27.780: E/AndroidRuntime(18368): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
    7. 05-08 13:48:27.780: E/AndroidRuntime(18368): at android.os.Handler.dispatchMessage(Handler.java:99)
    8. 05-08 13:48:27.780: E/AndroidRuntime(18368): at android.os.Looper.loop(Looper.java:137)
    9. 05-08 13:48:27.780: E/AndroidRuntime(18368): at android.app.ActivityThread.main(ActivityThread.java:4745)
    10. 05-08 13:48:27.780: E/AndroidRuntime(18368): at java.lang.reflect.Method.invokeNative(Native Method)
    11. 05-08 13:48:27.780: E/AndroidRuntime(18368): at java.lang.reflect.Method.invoke(Method.java:511)
    12. 05-08 13:48:27.780: E/AndroidRuntime(18368): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    13. 05-08 13:48:27.780: E/AndroidRuntime(18368): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    14. 05-08 13:48:27.780: E/AndroidRuntime(18368): at dalvik.system.NativeStart.main(Native Method)
    Alles anzeigen
  • Hoi,


    05-08 13:48:27.780: E/AndroidRuntime(18368): at de.darioc.geldausgaben.LvCursorAdapter$2$2.onClick(LvCursorAdapter.java:174)

    Da es dort in deinem LvCursorAdapter kracht, magst du den entsprechenden Ausschnitt mal posten? Da ist irgendwas null

    Gruß,
    matze
  • ah jetzt hab ichs hinbekommen ;)
    hab jetzt nur den teil mit dem alertdialog genommen

    Brainfuck-Quellcode

    1. public class LvCursorAdapter extends Activity {
    2. private GeldDbAdapter dbHelper;
    3. private SimpleCursorAdapter cursorAdapter;
    4. double new_betrag;
    5. String new_notiz;
    6. String new_datum;
    7. String new_plus_minus;
    8. String plus_minus;
    9. String betragCode;
    10. String notizCode;
    11. Integer idCode;
    12. String datumCode;
    13. //DatePicker
    14. private TextView tvChangedDate;
    15. private Button btnChangeDate;
    16. private int mYear;
    17. private int mMonth;
    18. private int mDay;
    19. static final int DATE_DIALOG_ID = 1;
    20. //RadioGroup/Button
    21. private RadioGroup rd_Group;
    22. @Override
    23. protected void onCreate(Bundle savedInstanceState) {
    24. super.onCreate(savedInstanceState);
    25. setContentView(R.layout.main);
    26. dbHelper = new GeldDbAdapter(this);
    27. dbHelper.open();
    28. displayListView();
    29. ImageButton img_add = (ImageButton)findViewById(R.id.img_btn_add);
    30. img_add.setOnClickListener(new OnClickListener() {
    31. @Override
    32. public void onClick(View v) {
    33. final View addView = getLayoutInflater().inflate(R.layout.add, null);
    34. // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //// Datum ändern \\\\ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    35. tvChangedDate = (TextView)addView.findViewById(R.id.tv_changedDate);
    36. btnChangeDate = (Button)addView.findViewById(R.id.btnChangeDate);
    37. btnChangeDate.setOnClickListener(new OnClickListener() {
    38. @Override
    39. public void onClick(View v) {
    40. DatePickerDialog DPD = new DatePickerDialog(
    41. LvCursorAdapter.this,
    42. mDateSetListener,
    43. mYear, mMonth, mDay);
    44. DPD.show();
    45. }
    46. });
    47. final Calendar c = Calendar.getInstance();
    48. // Date myDate = c.getTime();
    49. //
    50. // myFormat = "dd.MM.yyyy";
    51. // SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.GERMANY);
    52. // String date_add = sdf.format(myDate);
    53. mDay = c.get(Calendar.DAY_OF_MONTH);
    54. mMonth = c.get(Calendar.MONTH);
    55. mYear = c.get(Calendar.YEAR);
    56. updateDisplay();
    57. // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    58. final EditText add_betrag = (EditText)addView.findViewById(R.id.edt_add_betrag);
    59. final EditText add_notiz = (EditText)addView.findViewById(R.id.edt_add_notiz);
    60. new AlertDialog.Builder(LvCursorAdapter.this)
    61. .setTitle(R.string.add_eintrag)
    62. .setView(addView)
    63. .setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
    64. // Daten hinzufügen
    65. public void onClick(DialogInterface dialog, int whichButton) {
    66. ImageView img_p_m = (ImageView)addView.findViewById(R.id.img_plus_minus);
    67. // <<<<<<<<<<<< RadioGroup >>>>>>>>>>>>>
    68. rd_Group = (RadioGroup)addView.findViewById(R.id.rd_group);
    69. // holt sich die ID des ausgewählten RadioButton von der RadioGroup
    70. int selectedId = rd_Group.getCheckedRadioButtonId();
    71. // findet den RadioButton über die ID
    72. rd_Button = (RadioButton) findViewById(selectedId);
    73. boolean checked = false;
    74. switch(selectedId)
    75. {
    76. case R.id.rd_btn_plus:
    77. checked = true;
    78. break;
    79. case R.id.rd_btn_minus:
    80. checked = false;
    81. break;
    82. }
    83. if(checked)
    84. {
    85. plus_minus = "+"; // true ist +
    86. }
    87. else
    88. {
    89. plus_minus = "-"; // false ist -
    90. }
    91. // <<<<<<<<<<<<<<<< ------ >>>>>>>>>>>>>
    92. new_betrag = Double.parseDouble(add_betrag.getText().toString());
    93. new_notiz = add_notiz.getText().toString();
    94. new_datum = tvChangedDate.getText().toString();
    95. new_plus_minus = plus_minus;
    96. if (plus_minus.toString().equals("+"))
    97. img_p_m.setImageResource(R.drawable.plus_icon_small);
    98. if (plus_minus.toString().equals("-"))
    99. img_p_m.setImageResource(R.drawable.minus_icon_small);
    100. if (add_notiz.getText().toString().equals(""))
    101. new_notiz = "keine Notiz vorhanden";
    102. dbHelper.createEintraege(new_plus_minus, new_datum, new_betrag, new_notiz);
    103. displayListView();
    104. };
    105. })
    106. .setNegativeButton(R.string.abbrechen, null)
    107. .show();
    108. displayListView();
    109. }
    110. });
    111. //Daten löschen
    112. ImageButton img_clear = (ImageButton)findViewById(R.id.img_btn_clear);
    113. img_clear.setOnClickListener(new OnClickListener() {
    114. @Override
    115. public void onClick(View v) {
    116. new AlertDialog.Builder(LvCursorAdapter.this)
    117. .setTitle(R.string.delete)
    118. .setMessage(R.string.delete_all)
    119. .setPositiveButton(R.string.ja, new DialogInterface.OnClickListener() {
    120. @SuppressLint("ShowToast")
    121. @Override
    122. public void onClick(DialogInterface dialog, int which) {
    123. //Alle Daten löschen
    124. dbHelper.deleteAllEintraege();
    125. displayListView();
    126. Toast.makeText(getApplicationContext(), R.string.delete_toast, Toast.LENGTH_SHORT).show();
    127. }
    128. })
    129. .setNegativeButton(R.string.nein, null)
    130. .show();
    131. displayListView();
    132. }
    133. });
    134. }
    Alles anzeigen

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

  • Sieht so aus als sei dbHelper null, sofern deine Bezifferung übereinstimmt.

    Da das scheinbar eine private Variable deiner onCreate Methode ist, der OnClickListener aber in einem anderen Kontext ausgeführt wird und keinen Zugriff auf diese Variable hat, wird es daran scheitern.
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«
  • Hoi,

    also irgendwas ist da Null, da solltest du einfach mal rein debuggen, was genau das ist. das plus_minus.toString() irritiert mich, wieso führst du auf einen String toString aus? Schneiden/Überlagern sich hier evtl. zwei unterschiedliche Variablen?
    Eigentlich kannst du allein den Vergleich mit + und - schon durch den boolean selbst ersetzen ... ist ja irgendwie doppelt ... auch wenn es eigentlich da jetzt nichts ausmachen sollte.

    Ansonsten einfach mal vom onClick aus gestartet angucken, ob denn z.B. img_p_m wirklich gefunden und gesetzt wird und da nicht null kommt.

    Gruß,
    matze
  • hat sich erledigt :)

    aber irgendwie zeigt der mir nicht das icon an mh...

    Edit: ich bräuchte vll doch nochmal hilfe
    jetzt kommt resolveUri failed on bad bitmap uri: + bzw -

    Quellcode

    1. img_p_m.setImageResource(R.drawable.plus_icon_small);

    passt doch oder fehlt da noch was?

    Edit 2: habs jetzt anders gelöst, somit erledigt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von rush2rio ()