Domanda

Fondamentalmente voglio incapsulare un semplice componente dal codice che ho già.

In sostanza è un LinearLayout con bottoni all'interno. Questi pulsanti apportare modifiche a un ListView, e c'è anche qualche altro piccole cose che lo faccia.

Attualmente ho un layout XML con quelli, e io programmazione messa a punto tutto il resto:. I pulsanti, l'interazione tra la lista e l'altra roba piccola

Ovviamente ho pensato a me, andiamo incapsulano questo.

Ho iniziato cercando di estendere la LinearLayout e aggiungendo i pulsanti. Già non ho idea di come gonfiare i pulsanti per aggiungere alla vista Quale metodo faccio a ignorare per creare questa pulsanti appena prima che la vista viene creato senza fare confusione con le misure e le inflazioni, ecc.

Ho guardato intorno, ma i componenti personalizzati che vedo sono o completamente nuovi componenti o componenti che semplicemente aggiungere piccole funzionalità a quelle personalizzate.

Non v'è alcune linee guida per fare questo? Buoni tutorial / esempio?

Ogni aiuto è apprezzato. Grazie!

EDIT:

Va bene, qui è una roba po 'più specifico.

In sostanza voglio creare un View che contiene i pulsanti di filtro per un ListView. Questo sarà utilizzato in luoghi diversi con filtri diversi, quindi ho bisogno di flessibilità per i pulsanti.

In sostanza mi piacerebbe fare qualcosa di simile:

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

mListView.addHeaderView(view);

Voglio la vista per adattarlo di pesi per la visualizzazione dei pulsanti, mostrare all'utente quale filtro è attivo, cose del genere.

Ma io ancora non so davvero come fare apparire i pulsanti aggiunti in modo dinamico, dove faccio a generare, come per gonfiare loro e cose del genere.

È stato utile?

Soluzione

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);
    }

    //...

}

Si può anche fare qualcosa per la vista prima di inviare il clic in questo modo:

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);
    }

    //...

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top