Passage d'une image d'une listView à une autre activité

hta9wa - 3 avril 2013 à 11:02
 hta9wa - 5 avril 2013 à 16:06
salut,
J'ai créé une listView chaque item est composé par une image et des informations. Le clique sur un item permet le passage à une autre activité qui doit afficher l'image de l'item sélectionné. Jusqu'à présent, j'ai créé la listView, fait le passage à la nouvelle activité, le problème est l'affichage de l'image dans la nouvelle activité.
voilà le code des deux activité, veuillez l'aider SVP

Classe 1
package com.example.menu;

import java.util.ArrayList;
import java.util.HashMap;
import com.example.menu.actionBar.OnDispatchClickListener;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class ouvrir extends Activity implements OnDispatchClickListener{

final String EXTRA_LOGIN = "user_login";
final String EXTRA_IMAGE = "image";
EditText login;
private Button b1;
private actionBar abar;
private TextView textView;
private ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ouvrir);

login = (EditText)findViewById(R.id.edit);

abar = (actionBar)findViewById(R.id.actionbar);
abar.setTitle("Information");
abar.showButtonSearch();
abar.showButtonComment();
abar.setOnDispatchClickListener(this);

textView= (TextView)findViewById(R.id.click);

listView = (ListView)findViewById(R.id.listviewperso);
ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;

map = new HashMap<String, String>();
map.put("titre", "Coupe1");
map.put("description", "coupe1");
map.put("img", String.valueOf(R.drawable.coupe1));
listItem.add(map);

map = new HashMap<String, String>();
map.put("titre", "coupe2");
map.put("description", "coupe2");
map.put("img", String.valueOf(R.drawable.coupe2));
listItem.add(map);

map = new HashMap<String, String>();
map.put("titre", "coupe3");
map.put("description", "coupe3");
map.put("img", String.valueOf(R.drawable.coupe3));
listItem.add(map);

SimpleAdapter mAdapter = new SimpleAdapter(this.getBaseContext(), listItem, R.layout.affichageitem, new String[] {"img", "title", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});

listView.setAdapter(mAdapter);

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
HashMap<String, String>map=(HashMap<String, String>)listView.getItemAtPosition(position);
Intent intent = new Intent (ouvrir.this, image.class);
intent.putExtra(EXTRA_IMAGE, R.drawable.coupe1);
startActivity(intent);
}
});

b1 = (Button)findViewById(R.id.b1);

b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ouvrir.this, image.class);
intent.putExtra(EXTRA_LOGIN, login.getText().toString());
startActivity(intent);
}
});
}

@Override
public void onDispatchClick(int id) {
switch (id)
{
case R.id.ab_home:
textView.setText("Home");
break;
case R.id.ab_comment:
textView.setText("Informations");
break;
case R.id.ab_search:
textView.setText("Recherche");
break;
}
}
}

Classe 2:

package com.example.menu;

import com.example.menu.actionBar.OnDispatchClickListener;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class image extends Activity implements OnDispatchClickListener {

final String EXTRA_LOGIN = "user_login";
private actionBar abar;
private Button b1;
private TextView textView;
TextView loginD;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.image);

Intent intent = getIntent();
loginD = (TextView)findViewById(R.id.login);
if (intent != null)
{
loginD.setText(intent.getStringExtra(EXTRA_LOGIN));
Intent i = getIntent();
}

abar = (actionBar)findViewById(R.id.actionbar);
abar.setTitle("Information");
abar.showButtonSearch();
abar.showButtonComment();
abar.setOnDispatchClickListener(this);

textView= (TextView)findViewById(R.id.click);

b1 = (Button)findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent (getApplicationContext(), ouvrir.class);
startActivityForResult(intent, 1);
}
});
}
@Override
public void onDispatchClick(int id) {
switch (id)
{
case R.id.ab_home:
textView.setText("Home");
break;
case R.id.ab_comment:
textView.setText("Informations");
break;
case R.id.ab_search:
textView.setText("Recherche");
break;
}
}
}

3 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
3 avril 2013 à 13:15
Hello,
intent.putExtra(EXTRA_IMAGE, R.drawable.coupe1);

Ceci est bien la bonne méthode. Il te cherche juste à récupérer le bon drawable à donner à l'Intent. Tu connais la position de l'item qui a été sélectionné, donc tu es capable de récupérer les données associées.

Quelques remarques:
- pourquoi utiliser des HashMaps et non pas des objets?
- pour récupérer les sélections de menus dans l'actionBar, on passe plutôt par onOptionsItemSelected(MenuItem item) cf. un tuto
@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Merci bien pour votre réponse
je vais corriger mes erreurs
0
Salut,
Voilà j'ai corrigé les erreurs que vous m'avez indiqué précédemment,
maintenant l'affichage d'une chaine de caractère s'affiche mais le problème reste dans l'affichage de l'image, il ne se fait pas
Voilà mon code, veuillez m'aider plzzzzzz

Classe 1


package com.example.coupe;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class CoupeActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_coupe);

ArrayList image_details = GetSearchResults();

final ListView lv1 = (ListView) findViewById(R.id.listV_main);
lv1.setAdapter(new ItemBaseAdapter(this, image_details));

lv1.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Intent intent = new Intent (getApplicationContext(), affichage.class);
intent.putExtra("position", position);
startActivity(intent);

}
});
}

public static ArrayList GetSearchResults()
{
ArrayList result = new ArrayList();

ItemDetail item_details = new ItemDetail();
item_details.setName("Coupe1");
item_details.setInfo("informations");
item_details.setImageNumber(1);
result.add(item_details);

item_details = new ItemDetail();
item_details.setName("Coupe2");
item_details.setInfo("informations");
item_details.setImageNumber(2);
result.add(item_details);

item_details = new ItemDetail();
item_details.setName("Coupe3");
item_details.setInfo("informations");
item_details.setImageNumber(3);
result.add(item_details);

return result;
}
}

Classe 2


package com.example.coupe;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class affichage extends Activity{

ImageView img;
Bitmap bit;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.affichage);

Bundle b = getIntent().getExtras();
int index = b.getInt("position");
ItemDetail i = CoupeActivity.GetSearchResults().get(index);

((TextView)findViewById(R.id.text)).setText(i.getName());
((TextView)findViewById(R.id.text1)).setText(i.getInfo());

img = (ImageView)findViewById(R.id.img);
bit = i.getImgCoupe();
img.setImageBitmap(bit);
}
}
0
Rejoignez-nous