onclick

Mattepuffo's logo
Creare un dialog con QML

Creare un dialog con QML

Faccio un passo in più, e vediamo come aprire una finestra di dialogo cliccando su un elemento della ListView.

Qui abbiamo visto come riempire una ListView da dati JSON.

Come possiamo vedere, sulla ListView mostriamo solo un campo rispetto a quelli che prendiamo.

Adesso, cliccando su una riga, vogliamo vedere anche gli altri.

Prima di tutto creiamo un altro file QML (detail_dialog.qml) con questo dentro:

import QtQuick 2.0

Item {
    id: detailDialog
    anchors.fill: parent
    PropertyAnimation {
        target: detailDialog
        property: "opacity"
        duration: 400
        from: 0
        to: 1
        easing.type: Easing.InOutQuad
        running: true
    }

    Rectangle {
        id: dialogWindow
        width: 200
        height: 200
        radius: 10
        border.color: "black"
        anchors.centerIn: parent
        Text {
            anchors.centerIn: parent
            text: "AUTORE: " + author + "\nEDITORE: " + editor + "\nPREZZO: " + price + "\nISBN: " + isbn + "\nNOTE: " + note
        }
        MouseArea{
            anchors.fill: parent
            onClicked: {
                detailDialog.destroy()
            }
        }
    }
}

Adesso dobbiamo intercettare l'evento click sulla riga nella finestra principale.

Mattepuffo's logo
Ordinare una ListView in Android

Ordinare una ListView in Android

Abbiamo visto come riempire una ListView in Android usando dati in formato JSON.

Solo che la lista risulta "statica" nel senso che come ci arriva la leggiamo, e non possiamo ordinarla.

Qui vediamo proprio questo: come ordinare una ListView simulando una tabella con righe e colonne.

Partiamo dalla Activity principale:

public class MainActivity extends Activity {
    
    private TextView txtTitolo = null;
    private TextView txtCreazione = null;
    private ListView listView = null;
    private SimpleAdapter adapter = null;
    private ArrayList> list = new ArrayList>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setLista();
        txtTitolo = (TextView) findViewById(R.id.h_titolo);
        txtCreazione = (TextView) findViewById(R.id.h_creazione);
        txtTitolo.setOnClickListener(new ListSort(list, "titolo", adapter));
        txtCreazione.setOnClickListener(new ListSort(list, "creazione", adapter));
    }
    
    private void setLista() {
        try {
            listView = (ListView) findViewById(R.id.lista_articoli);
            JSONArray jsonArray = new JSONArray(JsonFile.read(path + "blog_articoli.json"));
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jo = jsonArray.getJSONObject(i);
                HashMap map = new HashMap();
                map.put("id", jo.getString("id"));
                map.put("titolo", jo.getString("titolo"));
                map.put("creazione", jo.getString("creazione"));
                map.put("modifica", jo.getString("modifica"));
                map.put("count", jo.getString("count"));
                list.add(map);
            }
            adapter = new SimpleAdapter(this, list, R.layout.rows,
                    new String[] { "titolo", "creazione", "modifica", "count" },
                    new int[] { R.id.titolo, R.id.creazione, R.id.modifica, R.id.count });
            listView.setAdapter(adapter);
        } catch (JSONException e) {
        } catch (Exception e) {
        }
    }

}

Tralascio tutta la parte del recupero dati, partendo che l'abbiate già messa a punto (quella parte non cambia).

Mattepuffo's logo
Asp.NET LinkButton

Asp.NET LinkButton

In una pagina aspx ho un LinkButton con il quale attivo un evento.

La cosa più "problematica" è che devo passare il valore del LinkButton ad un altro componente.

In questo caso non bastano le solite proprietà Value o Text.

Andiamo con ordine; questo il componente nella pagina:

<asp:LinkButton ID="btn_art_singolo" runat="server" OnCommand="go_Click" CommandName='<%# DataBinder.Eval(Container.DataItem, "ARTICOLO") %>'>
   <%# DataBinder.Eval(Container.DataItem, "ARTICOLO") %>
</asp:LinkButton>

Il LinkButton sta dentro a un Repeater e prende il valore in maniera dinamica da database.

Tanto per cominciare no avremo un evento OnClick ma u nevento OnCommand.

Mattepuffo's logo
Lanciare un'Activity in Android

Lanciare un'Activity in Android

Le applicazioni Android difficilemente son composte da una sola Activity.

Creare un'Acitivity per ogni compito è la normalità visto anche lo spazio ridotto dei cellulari.

Vediamo come possiamo fare per richiamare un'altra Activity.

Prima di tutto create un altro layout e chiamatelo second; nella cartella layout dovremmo avere second.xml.

Questo sarà il layout della nostra seconda Activity.

Una volta modificato come volete create una nuova classe che estende Activity:

public class SecondActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);

}

Poi andate a modificare il file AndroidManifest.xml: