2017-08-06 2 views
0

J'ai essayé pendant des jours pour trouver une solution à mon problème, mais maintenant j'ai décidé d'essayer de te demander. Je suis un Noob pour la programmation Android, alors s'il vous plaît pardonnez-moi. J'ai un principal Activity avec un Listview dedans.Changer la vue d'ensemble de ma liste

J'utilise un Simplecursoradapter pour l'alimenter avec des informations de ma base de données et une mise en page personnalisée que j'ai faite en XML. Mon problème est, je veux changer quelques-uns des termes ou les unités que j'ai utilisées dans cette mise en page personnalisée, qui n'est pas le flux à travers la base de données.

Mais si j'utilise settext pour le TextViews là-bas il ne courra pas, l'application va planter, parce que mon setContentView est réglé sur une autre mise en page pour cette classe, je suppose. J'ai regardé inflaters, essayant de voir si je pourrais changer le XML programmable, employez une chaîne de String.xml et changez cela. Mais autant que je peux voir ce ne sont pas une option. Plus tard, je trouve ce code sur StackOverflow

Activity activity = (Activity)getContext(); 
TextView t = (TextView)activity.findViewById(R.id.txtDisponible); 
t.setText("E-ticket validado"); 

Mais je ne peux pas que cela fonctionne parce que la première ligne ne fonctionne pas pour moi. Le Activity ne me donnera pas la méthode getcontext. Et même si je réussissais à faire fonctionner ça, je ne saurais pas si ça marcherait. Pourriez-vous me guider dans quelle direction je dois aller? A partir de maintenant, je n'ai pas de cours pour mon ListView, c'est la voie à suivre. Je veux garder cela aussi simple que possible.

Nous vous remercions de votre aide.

EDIT 1:

Ok j'ai essayé de mettre cela dans mon code:

LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.item_list, null); 
    TextView t = (TextView) view.findViewById(R.id.kmListview); 
    t.setText("bok"); 

L'application ne tombe pas en panne, mais il ne change pas le textview soit.

+0

La définition de onyl textView ne résout pas le problème. Vous devez conserver une liste de données dans votre adaptateur et vous devez mettre à jour votre liste. Après chaque mise à jour de l'élément ou des éléments de la liste, vous devez appeler la méthode notifyDataSetChange() de votre adaptateur. Vous avez vraiment tellement de problèmes avec le fonctionnement de listView. Je pense que c'est la partie la plus difficile d'Android. Tout d'abord, vous devez comprendre ListView, recycler les éléments dans ListView et utiliser ViewHolder (pour les mises en page) dans ListView et également gérer les éléments (pour les données) de listView. –

Répondre

0

L'activité étend la classe ContextWrapper et vous devez l'utiliser ou getBaseContext() car il n'existe aucune méthode comme getContext() qui étend la classe ContextWrapper. Donc, utilisez ceci comme Context ou getBaseContext() dans votre Actitiy et je pense que votre problème sera résolu.

+0

Hmm .. Quand je mets le code, je reçois cette erreur java.lang.ClassCastException: android.app.ContextImpl ne peut pas être cast en com.uniqueapps.driverslogger2.Main – Nicer

+0

Pour autant que je peux voir, ce problème se produit parce que j'utilise l'activité principale pour faire ceci. Mais puisque je n'ai ni classe ni activité pour cette liste, que devrais-je mettre alors? – Nicer

+0

Suivez ce lien [https://github.com/codepath/android_guides/wiki/Populating-a-ListView-with-a-CursorAdapter] espérons que cela vous aidera à mieux comprendre. –