Initialisieren von Custom Adapter

  • Antworten:3
Elmar E.
  • Forum-Beiträge: 7

23.03.2017, 10:58:24 via Website

Hallo zusammen,

ich bin gerade etwas durch weil ich nun seit Tagen an verschiedenen Problemchen im Code einer Android App sitze und sehe wahrscheinlich gerade den Wald vor lauter Bäumen nicht mehr.

In folgender Klasse habe ich in Zeile 41 das Problem:

public class AddCategoryDialog {

//Add a new category and tag in dialog window
public void add_new_category(final Activity activity) {
    AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    View dView = activity.getLayoutInflater().inflate(R.layout.dialog_new_category, null);
    final EditText nCategory = (EditText) dView.findViewById(R.id.newCategory);
    final EditText nTag = (EditText) dView.findViewById(R.id.newTag);
    Button dCancel = (Button) dView.findViewById(R.id.buttonCancel);
    Button dAdd = (Button) dView.findViewById(R.id.buttonAdd);

    builder.setView(dView);
    final AlertDialog dialog = builder.create();

    dAdd.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {

Z41 CategoriesAdapter adapter = new CategoriesAdapter(this, );

            if (nCategory.getText().toString().isEmpty() || nTag.getText().toString().isEmpty()){
                Toast.makeText(activity, "Empty field!\n Please fill any empty field.", Toast.LENGTH_SHORT).show();
            }else{
                BASECategory categoryOfAdapter = adapter.findCategory(nCategory.getText().toString());
                if (categoryOfAdapter != null){
                    categoryOfAdapter.getTags().add(nTag.getText().toString());
                    adapter.notifyDataSetChanged();
                } else {
                    List<String> tags = new ArrayList<String>();
                    tags.add(nTag.getText().toString());
                    adapter.addCategory(new BASECategory(nCategory.getText().toString(), tags));
                    Toast.makeText(activity, "Data added.", Toast.LENGTH_SHORT).show();
                }
                dialog.dismiss();
            }
        }
    });

    dCancel.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            dialog.dismiss();
            Toast.makeText(activity, "Adding data canceled!", Toast.LENGTH_SHORT).show();
        }
    });


    dialog.show();
}

}

die Klasse des Adapters:

public class CategoriesAdapter extends ArrayAdapter<BASECategory> {

private final Context context;
private List<BASECategory>  values = new ArrayList<BASECategory>();

public CategoriesAdapter(Context context, List<BASECategory> objects) {
    super(context, -1, objects);
    this.context = context;
    this.values = objects;
}

public void addCategory(BASECategory category) {
    values.add(category);
    notifyDataSetChanged();
}

Wie genau ich das Problem beschreiben soll kann ich gar nciht sagen. Wie gesagt ich will eigentlich nur in der Klasse AddCategoryDialog in der onClick Methode den Adapter initialisieren und bekomme das gerade irgendwie überhaupt nciht hin.

Ich bin über jede mithilfe dankbar.

VG

— geändert am 23.03.2017, 12:02:01

Antworten
swa00
  • Forum-Beiträge: 3.704

23.03.2017, 11:42:21 via Website

Hallo Elmar,

du könntest uns ( und auch Dir) das Leben erleichtern , wenn du die Zeile (41) markieren könntest ,
denn es ist ein Unding, jetzt hier "durchzuzählen".

Und absolut von Vorteil wäre es , wenn du den Fehler genau beschreibst und den Errorlog beihängst.

— geändert am 23.03.2017, 11:46:05

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Elmar E.
  • Forum-Beiträge: 7

23.03.2017, 12:03:10 via Website

wie kann ich die Zeilen den markieren? Ich habe es jetzt mal außerhalb des Codes gesetzt... Log wird nachgereicht

Wie vielleicht in Z41 auch zu sehen ist der Fehler, dass ich kein Plan habe was ich hinter dem Komma zu schreiben habe.

— geändert am 23.03.2017, 12:08:56

Antworten
swa00
  • Forum-Beiträge: 3.704

23.03.2017, 12:12:39 via Website

genau das meinte ich, das war schon mal der Erste schritt .

ich kein Plan habe was ich hinter dem Komma zu schreiben habe

.

Na das was du im Constructor als Parameter selbst anforderst.... ein Objekt des Types List

public CategoriesAdapter(Context context, List < BASECategory > objects) {

.
.

Anmerkung :

Es ist an dieser Stelle ziemlich verwirrend , dass du uns schließlich nach deinen eigenen Parametern fragst
Ich erahne da schon was :-)

— geändert am 23.03.2017, 15:19:40

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten