Forums Android
Listener sur un ArrayList .. Impossible de cliquer
Voir le premier message non lu • 3 messages
• Page 1 sur 1
Listener sur un ArrayList .. Impossible de cliquer
Bonjour à toutes & à tous,
Actuellement en stage, je dois réaliser une application Android, jusque la pas de problème mise à part que j'étais dans une formation PHP et la c'est du JAVA
Bref !
Mon application avance doucement mais surment.
Le principe de mon application :
- Récupérer des informations sur MYSQL depuis un serveur PHP.
- Ensuite depuis du JAVA récupérer grâce au format JSON les informations désirées.
- Puis réaliser plusieurs fonctions que je ne vais pas détailler pour le moment.
Pour ça il n'y à pas de souci, j'ai affiché tout ça dans un ArrayList, et voila ce que j’obtiens :
Et a partir de cette affichage, j'aimerais que lorsque je clique sur un élément, ça m'affiche une nouvelle page ( Celle ci, je n'ai pas finie la mise en page mais c'est un aperçu ) en recupérant les informations de cette dernière comme l'image, le titre etc :
Le souci ?
J'essaye juste de detecter un Click sur mes elements, mais il ne se passe rien, et je n'ai pas de message d'erreur dans le LogCat
Comme je suis pas encore trés formé, je comprend pas ce qui ne vas pas .. j'ai cherché sur le forum et appliqué leurs conseils mais rien ne fonctionne =/
Aprés le blabla .. voici mon code : ( Bonne chance x) )
Mon adaptateur : MonAdapter.java
Ma class Lieu.java pour mon adaptateur :
Mon fichier java principale PlacesActivity.java :
Mon main2.xml dans lequel j'appelle ma listview :
Et pour finir mon lieux.xml dans lequel je lui indique les imageview, textview etc :
Voila je suis désolé pour la longueur mais sans code c'est dure de trouver ce qui ne fonctionne pas :S
Je vous remercie d'avance si vous pouvez m'aider =/
Cordialement,
Quentin.
Actuellement en stage, je dois réaliser une application Android, jusque la pas de problème mise à part que j'étais dans une formation PHP et la c'est du JAVA
Bref !
Mon application avance doucement mais surment.
Le principe de mon application :
- Récupérer des informations sur MYSQL depuis un serveur PHP.
- Ensuite depuis du JAVA récupérer grâce au format JSON les informations désirées.
- Puis réaliser plusieurs fonctions que je ne vais pas détailler pour le moment.
Pour ça il n'y à pas de souci, j'ai affiché tout ça dans un ArrayList, et voila ce que j’obtiens :
Et a partir de cette affichage, j'aimerais que lorsque je clique sur un élément, ça m'affiche une nouvelle page ( Celle ci, je n'ai pas finie la mise en page mais c'est un aperçu ) en recupérant les informations de cette dernière comme l'image, le titre etc :
Le souci ?
J'essaye juste de detecter un Click sur mes elements, mais il ne se passe rien, et je n'ai pas de message d'erreur dans le LogCat
Comme je suis pas encore trés formé, je comprend pas ce qui ne vas pas .. j'ai cherché sur le forum et appliqué leurs conseils mais rien ne fonctionne =/
Aprés le blabla .. voici mon code : ( Bonne chance x) )
Mon adaptateur : MonAdapter.java
- Code: Select All Code
package android.sitesavisiter;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MonAdapter extends BaseAdapter {
private Context mContext;
//Le contexte dans lequel est présent notre adapter
// notre adaptateur creer seul les objet necessaire
private LayoutInflater mInflater;
////Un mécanisme pour gérer l'affichage graphique depuis un layout XML
//charger notre fichier XML pour l’item
private ArrayList<Lieu> results;
// tableau de nos données
private ViewHolder holder;
//ViewHolder = sert à mémoriser les éléments de la liste en mémoire
//pour qu’à chaque rafraichissement l’écran ne scintille pas
// le constructeur
public MonAdapter(Context c, ArrayList<Lieu> results)
{
mContext = c;
mInflater = LayoutInflater.from(mContext);
//Le LayoutInflater permet de parser un layout XML et de te transcoder en IHM Android.
this.results = results;
}
private static class ViewHolder // declaration des elements quon affichera
{
ImageView imgSmall;
TextView subCategoryPrincipale;
TextView subcats;
TextView descrMea;
TextView nom;
}
@Override
public int getCount() //qui retournera le nombre d’éléments dans notre liste.
{
//Pour respecter l'interface BaseAdapter, il nous faut spécifier la méthode "count()".
return results.size();
}
@Override
public Object getItem(int position)
{
//qui retournera notre la position indiquée de notre objet
return results.get(position);
}
@Override
public long getItemId(int position) //qui retournera l’id de l'objet
{
return position;
}
// Maintenant il faut surcharger la méthode pour renvoyer une "View"
// en fonction d'une position donnée.
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//(1) : Réutilisation des layouts
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.lieux, null);
//Initialisation de notre item à partir du layout XML "lieux.xml"
holder = new ViewHolder();
//(2) : Récupération des TextView de notre layout
holder.imgSmall = (ImageView) convertView.findViewById(R.id.list_item_image);
holder.subCategoryPrincipale = (TextView) convertView.findViewById(R.id.list_item_name);
holder.nom = (TextView) convertView.findViewById(R.id.list_item_lieu);
holder.subcats = (TextView) convertView.findViewById(R.id.list_item_namebis);
holder.descrMea = (TextView) convertView.findViewById(R.id.list_item_description);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
//(3) : Renseignement des valeurs
Lieu c = (Lieu) getItem(position);
holder.imgSmall.setImageBitmap(c.getImage());
holder.subCategoryPrincipale.setText(c.getName());
holder.nom.setText(c.getLieux());
holder.subcats.setText(c.getNamebis());
holder.descrMea.setText(c.getDescription());
//On retourne l'item créé.
return convertView;
}
}
Ma class Lieu.java pour mon adaptateur :
- Code: Select All Code
package android.sitesavisiter;
import android.graphics.Bitmap;
public class Lieu {
String nom, descrMea, subCategoryPrincipale, subcats;
Bitmap imgSmall;
public Lieu(String lieu, String desc, Bitmap img, String nom, String nombis) {
// TODO Auto-generated constructor stub
setLieux(lieu);
setDescription(desc);
setImage(img);
setName(nom);
setNamebis(nombis);
}
//la categorie
public String getName()
{
return subCategoryPrincipale;
}
public void setName(String nom)
{
this.subCategoryPrincipale = nom;
}
//l image
public Bitmap getImage()
{
return imgSmall;
}
public void setImage(Bitmap img)
{
this.imgSmall = img;
}
//le nom de la sous cat
public void setNamebis(String nombis)
{
this.subcats = nombis;
}
public String getNamebis()
{
return subcats;
}
//le lieu
public String getLieux()
{
return nom;
}
public void setLieux(String lieu)
{
this.nom = lieu;
}
//la description
public String getDescription()
{
return descrMea;
}
public void setDescription(String desc)
{
this.descrMea = desc;
}
}
Mon fichier java principale PlacesActivity.java :
- Code: Select All Code
package android.sitesavisiter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.R.id;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class PlacesActivity extends ListActivity implements AdapterView.OnItemClickListener
{
// Tableau où seront stocké les données récupérées
private ArrayList<Lieu> results;
InputStream is;
JSONObject json_data;
private Bitmap myBitmap;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
getData();
this.setListAdapter(new MonAdapter(this, results));
getListView().setOnItemClickListener(this);
//String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse"};
//this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names));
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Log.i("*****************","LE TAG");
Toast.makeText(this, "SELECTION: ", Toast.LENGTH_LONG).show();
}
/*
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
// TODO Auto-generated method stub
Log.i("*****************","LE TAG");
// Obtien l'item clique
//Object o = this.getListAdapter();
//String keyword = o.toString();
Toast.makeText(this, "SELECTION: ", Toast.LENGTH_LONG).show();
}*/
private void getData()
{
results = new ArrayList<Lieu>();
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/VivreParis/htdocs_dev/demo/android/json/new_lieux.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch(Exception e)
{
Log.e("log_tag", "Erreur de connexion au http "+e.toString());
}
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}
catch(Exception e)
{
Log.e("log_tag", "Erreur lors de la conversion"+e.toString());
}
try
{
JSONObject json = new JSONObject(result);
JSONArray ja = json.getJSONArray("lieux");
JSONArray ja2 = json.getJSONArray("subcats");
JSONArray ja3 = json.getJSONArray("categs");
for (int i = 0; i < ja.length(); i++)
{
JSONObject j = ja.getJSONObject(i);
String lieu = j.getString("nom");
String desc = j.getString("descrMea");
String image = j.getString("imgSmall");
String nom3 = j.getString("subCategoryPrincipale");
String nombis = j.getString("subcats");
BmpFromURL myBmpFromURL = new BmpFromURL(image);
Bitmap img = myBmpFromURL.getMyBitmap();
for (int o = 0; o < ja2.length(); o++)
{
JSONObject j2 = ja2.getJSONObject(o);
String idsous = j2.getString("id");
String nomsous = j2.getString("nom");
String catsous = j2.getString("cat");
if (nom3.equals(idsous))
{
nom3 = nomsous;
nombis = catsous;
}
for (int p = 0; p < ja3.length(); p++)
{
JSONObject j3 = ja3.getJSONObject(p);
String idcat = j3.getString("id");
String nomcat = j3.getString("nom");
if (nombis.equals(idcat))
{
//System.out.println("ANCIENNES VALEURS :"+ cat);
nombis = nomcat;
//System.out.println("NEW VALEURS :"+ cat);
}
}
}
results.add(new Lieu ( lieu, desc, img, nom3, nombis));
}
}
catch(JSONException e)
{
Log.i("RESULTATS :", "ERREUR: " +e);
Log.e("log_tag", "Erreur lors du chargement des données "+e.toString());
}
}
public class BmpFromURL
{
//The following code will be placed inside here
public BmpFromURL(String imageURL)
{
URL myImageURL = null;
try {
myImageURL = new URL(imageURL);
}
catch (MalformedURLException error)
{
error.printStackTrace();
}
try {
HttpURLConnection connection = (HttpURLConnection)myImageURL .openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
myBitmap = BitmapFactory.decodeStream(input);
}
catch (IOException e)
{
e.printStackTrace();
}
}
public Bitmap getMyBitmap()
{
return myBitmap;
}
}
}
Mon main2.xml dans lequel j'appelle ma listview :
- Code: Select All Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="false"
android:focusableInTouchMode="false"
>
<Button
android:id="@+id/boutonFiltre"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:text="Filtrer"
android:layout_marginLeft="255dp"
android:layout_marginTop="5dp"
>
</Button>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/list"
android:clickable="true"
>
</ListView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@android:id/empty"
android:text="Rien a afficher"
>
</TextView>
</FrameLayout>
</LinearLayout>
Et pour finir mon lieux.xml dans lequel je lui indique les imageview, textview etc :
- Code: Select All Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
>
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="42px"
android:gravity="center_vertical"
>
<ImageView
android:id="@+id/list_item_image"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"
android:layout_height="74px"
android:layout_width="wrap_content"
android:clickable="true"
>
</ImageView>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:textSize="13px"
android:textStyle="bold"
android:gravity="center_vertical"
android:layout_marginLeft="2px"
android:id="@+id/list_item_namebis"
android:layout_height="wrap_content"
>
</TextView>
<TextView
android:layout_height="wrap_content"
android:id="@+id/list_item_name"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_marginLeft="2px"
android:paddingLeft="5dp"
>
</TextView>
</LinearLayout>
<TextView
android:layout_height="wrap_content"
android:id="@+id/list_item_lieu"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_marginLeft="2px"
android:lines="1"
android:textSize="16px"
android:textColor="#000000"
android:textStyle="bold"
>
</TextView>
<TextView
android:layout_height="wrap_content"
android:id="@+id/list_item_description"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_marginLeft="2px"
android:lines="1"
android:textSize="10px"
android:textColor="#666666"
android:textStyle="italic"
>
</TextView>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Voila je suis désolé pour la longueur mais sans code c'est dure de trouver ce qui ne fonctionne pas :S
Je vous remercie d'avance si vous pouvez m'aider =/
Cordialement,
Quentin.
Dernière édition par bobyetcrycry le 28 Avr 2011, 18:10, édité 1 fois.
Raison: Gras inutile supprimées.
Raison: Gras inutile supprimées.
- DenverChouw Gamer Débutant
- Messages: 2
- Inscription: 28 Avr 2011, 17:21
- Pays: France
- Sexe: Homme
Re: Listener sur un ArrayList .. Impossible de cliquer
Bonjour,
Sur quels éléments ils ne se passent rien ?
Que voudrais-tu que cela fasse ?
Sur quels éléments ils ne se passent rien ?
Que voudrais-tu que cela fasse ?
-
marshallino16
Gamer Argent
- Messages: 3777
- Inscription: 12 Déc 2009, 18:21
- Localisation: Toulouse
- Pays: France
- Sexe: Homme
Re: Listener sur un ArrayList .. Impossible de cliquer
Bonjour,
Tout d’abord merci d'avoir répond
Je souhaiterais que lorsque je clic sur un éléments affichés qui contient donc l'image, le titre, la catégorie etc, j'aimerais que ça m'ouvre une nouvelle page qui contiendra ces mêmes informations avec plus de détails, mais pour le moment je n'arrive même pas a cliquer sur ma liste =S
J'ai essayé de mettre clickable=true etc mais rien, il ne veut pas entrer dans ma fonction onItemClic, je comprend pas pourquoi =(
J’espère que ces informations on peut un peut t'aider pour cibler mon problème =/
Cordialement,
Quentin.
[EDIT] by ##¤DroidXAce¤## : Attention, pour la bonne lisibilité du forum, il est inutile d'abuser des caractères en gras / italique / couleurs et taille.
Merci de votre compréhension.
Edit : D'accord, je suis désolé pour la gène occasionnée :S
Tout d’abord merci d'avoir répond
Je souhaiterais que lorsque je clic sur un éléments affichés qui contient donc l'image, le titre, la catégorie etc, j'aimerais que ça m'ouvre une nouvelle page qui contiendra ces mêmes informations avec plus de détails, mais pour le moment je n'arrive même pas a cliquer sur ma liste =S
J'ai essayé de mettre clickable=true etc mais rien, il ne veut pas entrer dans ma fonction onItemClic, je comprend pas pourquoi =(
J’espère que ces informations on peut un peut t'aider pour cibler mon problème =/
Cordialement,
Quentin.
[EDIT] by ##¤DroidXAce¤## : Attention, pour la bonne lisibilité du forum, il est inutile d'abuser des caractères en gras / italique / couleurs et taille.
Merci de votre compréhension.
Edit : D'accord, je suis désolé pour la gène occasionnée :S
- DenverChouw Gamer Débutant
- Messages: 2
- Inscription: 28 Avr 2011, 17:21
- Pays: France
- Sexe: Homme
3 messages
• Page 1 sur 1