Frage

Grundsätzlich möchte ich eine einfache Komponente aus Code, die ich bereits habe, zusammenfassen.

Grundsätzlich ist es ein LinearLayout mit Knöpfen im Inneren. Diese Tasten werden Änderungen an a ListView, Und es gibt auch noch einige andere kleine Dinge, die es tun wird.

Derzeit habe ich ein XML -Layout damit und habe programmgesteuert alles andere eingerichtet: die Schaltflächen, die Interaktion zwischen der Liste und den anderen kleinen Dingen.

Offensichtlich dachte ich mir, lass uns das zusammenfassen.

Ich fing an zu versuchen, das zu erweitern LinearLayout und Hinzufügen der Tasten. Ich habe bereits keine Ahnung, wie ich die Schaltflächen aufblasen kann, um der Ansicht hinzuzufügen, welche Methode ich überschreibe, um diese Schaltflächen zu erstellen, kurz bevor die Ansicht erstellt wird, ohne mit den Maßnahmen und Inflationen usw. zu spielen.

Ich habe mich umgesehen, aber die benutzerdefinierten Komponenten, die ich sehe, sind entweder völlig neue Komponenten oder Komponenten, die den benutzerdefinierten einfach kleinen Funktionen verleihen.

Gibt es einige Richtlinien dafür? Gute Tutorials/Beispiele?

Jede Hilfe wird geschätzt. Vielen Dank !

BEARBEITEN:

Okay, hier ist ein bisschen spezifischer.

Grundsätzlich möchte ich eine erstellen View Das hält Filtertasten für a ListView. Dies wird an verschiedenen Stellen mit verschiedenen Filtern verwendet, daher brauche ich Flexibilität für die Tasten.

Grundsätzlich würde ich so etwas tun:

CustomView view = new CustomView(activity);
view.addButton("Lala", new OnFilterClickListener { 
    onClick(ListView list, View v) {
      // Do the filtering
    }
});

mListView.addHeaderView(view);

Ich möchte, dass die Ansicht ihre Gewichte anpassen, um die Schaltflächen anzuzeigen, den Benutzer anzeigen, der Filter ist, so wie diese.

Aber ich weiß immer noch nicht wirklich, wie ich diese dynamisch hinzugefügten Schaltflächen erscheinen kann. Wo erzeugt ich sie, wie man sie aufblasen und ähnliches.

War es hilfreich?

Lösung

public class myLayout extends LinearLayout {

    //...

    public void addButton(String text, OnClickListener listener) {
        Button newButton = new Button(mContext);
        newButton.setText(text);
        newButton.setOnClickListener(listener);
        //Say we want the weights to be equal
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.Fill_PARENT, 1);
        addView(newButton, params);
    }

    //...

}

Sie können sogar etwas mit der Ansicht tun, bevor Sie den Klick wie diesen entsenden:

public class myLayout extends LinearLayout {

    //...

    public void addButton(String text, final OnClickListener listener) {
        Button newButton = new Button(mContext);
        newButton.setText(text);
        newButton.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                //do whatever you want
                //like change background of button or something
                //finally
                listener.onClick(v);
            }
        });
        //Say we want the weights to be equal
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.Fill_PARENT, 1);
        addView(newButton, params);
    }

    //...

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top