Autore Topic: Font listView con arrayAdapter, come si cambia?  (Letto 587 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Font listView con arrayAdapter, come si cambia?
« il: 27 Luglio 2015, 19:41:05 CEST »
0
Salve amici ho un problema . Ho un arrayAdapter costituito da un'immagine statica e del testo dinamico. Vorrei cambiare il font del testo contenuto nella listView che a sua volta è adattato tramite arrayAdapter. Avete gentilmente qualche consiglio da darmi? Grazie in anticipo per la risposta.
« Ultima modifica: 03 Agosto 2015, 01:48:04 CEST da moskino11 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Cambiare font array adapter
« Risposta #1 il: 27 Luglio 2015, 21:40:20 CEST »
+1
Sul tuo oggetto Textview chiama setTypeface()

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare font array adapter
« Risposta #2 il: 28 Luglio 2015, 12:00:31 CEST »
0
Sul tuo oggetto Textview chiama setTypeface()

Ho dimenticato di dire che l'arrayAdapter si trova nel metodo onPostExecute() dell'AsyncTask...
Io ho fatto in questo modo ma quando la lancio in esecuzione l'app viene arrestata

Codice (Java): [Seleziona]
 protected void onPostExecute(String result)
        {
            // dopo che ho eseguito il parsing mostro i dati nella listview
            // usando l' array adpater
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(Seconda.this, R.layout.layout_riga, R.id.testo, titoli);

            // Codice per cambiare il font
            Typeface myTypeface = Typeface.createFromAsset(getAssets(),"Quattrocento.ttf");
            TextView waitingTimeView = (TextView) findViewById(R.id.testo);
            waitingTimeView.setTypeface(myTypeface);



            date1.setAdapter(adapter);
            mProgressDialog.dismiss();



        }

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Cambiare font array adapter
« Risposta #3 il: 28 Luglio 2015, 14:24:04 CEST »
+1
Posta il log. Non possiamo indivoinare la causa del crash

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare font array adapter
« Risposta #4 il: 28 Luglio 2015, 17:44:09 CEST »
0
Posta il log. Non possiamo indivoinare la causa del crash
Hai perfettamente ragione scusa

07-28 17:41:41.543    3457-3457/com.myProgramming.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.myProgramming.example, PID: 3457
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setTypeface(android.graphics.Typeface)' on a null object reference
            at com.myProgramming.example.Seconda$Titolo.onPostExecute(Seconda.java:284)
            at com.myProgramming.example.Seconda$Titolo.onPostExecute(Seconda.java:209)
            at android.os.AsyncTask.finish(AsyncTask.java:636)
            at android.os.AsyncTask.access$500(AsyncTask.java:177)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare font array adapter
« Risposta #5 il: 30 Luglio 2015, 19:53:14 CEST »
0
Non c'è nessuno che può aiutarmi perfavore?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Cambiare font array adapter
« Risposta #6 il: 30 Luglio 2015, 21:34:31 CEST »
0
O il tyoeface o la Textview sono nulli

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Cambiare font array adapter
« Risposta #7 il: 31 Luglio 2015, 09:58:44 CEST »
0
O il tyoeface o la Textview sono nulli

Probabilmente la textview.Ti spiego meglio come è strutturato l'xml: ho una listview ed ogni riga è caratterizzata da un file xml che si chiama layout_riga costituito da un immagine statica e una textview dinamica.
Non capisco perche sia nullo, gli ho passato il riferimento R.id.testo  :-(
Cosa pensi dovrei cambiare?

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Font listView con arrayAdapter, come si cambia?
« Risposta #8 il: 07 Agosto 2015, 10:57:38 CEST »
0
Possibile non ci sia nessuno che può aiutarmi in questa cosa? :(

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Font listView con arrayAdapter, come si cambia?
« Risposta #9 il: 07 Agosto 2015, 13:01:26 CEST »
+1
Non sono sicuro che puoi accedere alla Textview tramite quel codice. Questo perché uso array adapter nativo. Potresti provare con un custom array adapter

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Font listView con arrayAdapter, come si cambia?
« Risposta #10 il: 07 Agosto 2015, 15:39:38 CEST »
0
mmm..interessante, peccato che non so come procedere . Potresti aiutarmi ?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Font listView con arrayAdapter, come si cambia?
« Risposta #11 il: 07 Agosto 2015, 15:40:43 CEST »
+1
C'è un tutorial su questo forum. Listview con custom layout

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Font listView con arrayAdapter, come si cambia?
« Risposta #12 il: 07 Agosto 2015, 15:41:35 CEST »
0
ok grazie prova  a darci un'occhiata

Post unito: 07 Agosto 2015, 16:28:15 CEST
Ho guardato l'esempio da te indicato ed ho fatto questo:

ho creato un customAdapter
Codice (Java): [Seleziona]
package com.myProgramming.luigi_gentile.beneventoturnifarmacie;

import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by Luigi_Gentile on 07/08/15.
 */

public class TitoliAdapter extends ArrayAdapter<String> {
    private ArrayList<String> titoli;
    private Context context;

    // Costruttore
    public TitoliAdapter(Context context, int idRes, ArrayList<String> titoli){
        super(context, idRes, titoli);
        this.titoli = titoli;
        this.context = context;
    }

    // Override getView
    public View getView(int position, View convertView, ViewGroup parent){

        // Variabile d'appoggio
        View v = convertView;

        // Controllo se è null
        if(v == null){
            LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inflater.inflate(R.layout.layout_riga, null);
        }

        // Recupero la nota
        String t = this.titoli.get(position);

        // Se non è null, imposto tutto
        if(t != null){
            ViewTitolo holder = new ViewTitolo();

            // Recupero gli elementi

            holder.titolo = (TextView) v.findViewById(R.id.testoRiga);


            setFont(holder.titolo);


        }

        return v;
    }

    public void setFont(TextView tv){

        Typeface myTypeface = Typeface.createFromAsset(context.getAssets(),"Wrighters.ttf");



        tv.setTypeface(myTypeface);


    }


    // Classe di appoggio contenente gli elementi del layout della nota
    private class ViewTitolo{
        public TextView titolo;

    }
}

poi li dove utilizzavo l'array adapter
Codice (Java): [Seleziona]
 //ArrayAdapter<String> adapter = new ArrayAdapter<String>(Seconda.this, R.layout.layout_riga, R.id.testoRiga, titoli);ho sostituito con il custom adapter
Codice (Java): [Seleziona]
TitoliAdapter<String> adapter = new TitoliAdapter<String>(Seconda.this, ???, titoli);nel secondo parametro int idRes cosa dovrei metterci?
« Ultima modifica: 07 Agosto 2015, 16:28:15 CEST da moskino11, Reason: Merged DoublePost »