2010-06-03 5 views
0

J'utilise un LinearLayout pour afficher du texte et une image. J'ai les images à drawable/et j'implémente cela avec ListActivity avec une fonctionnalité onListItemClick. maintenant je veux changer l'image pour les lignes qui sont traitées par la fonctionnalité onclick pour montrer le statut tel que traité. quelqu'un peut-il m'aider dans cette question pour changer l'image à l'exécution.changer l'image sur listview à l'exécution dans android

ce qui suit est mon implimentation.

public class ListWithImage extends ListActivity { /** Appelé lors de la première création de l'activité. */

private SimpleCursorAdapter monAdaptateur;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
// raj setContentView(R.layout.main); 

    Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null); 
    startManagingCursor(cursor); 

    String[] columns = new String[] {People.NAME, People.NUMBER}; 
    int[] names = new int[] {R.id.contact_name, R.id.contact_number}; 

    myAdapter = new SimpleCursorAdapter(this, R.layout.main, cursor, columns, names); 
    setListAdapter(myAdapter); 

} 


@Override 
protected void onListItemClick(ListView listView, View view, int position, long id) { 
    super.onListItemClick(listView, view, position, id); 

    Intent intent = new Intent(Intent.ACTION_CALL); 
    Cursor cursor = (Cursor) myAdapter.getItem(position); 
    long phoneId = cursor.getLong(cursor.getColumnIndex(People.PRIMARY_PHONE_ID)); 
    intent.setData(ContentUris.withAppendedId(Phones.CONTENT_URI, phoneId)); 

    startActivity(intent); 
} 

}

et main.xml est:

<LinearLayout 
    android:layout_height="wrap_content" android:orientation="vertical" android:layout_width="250px"> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:orientation="horizontal"> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Name: " /> 

    <TextView android:id="@+id/contact_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 
    <LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:orientation="horizontal">   
    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Phone: " />  
    <TextView android:id="@+id/contact_number" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 


Je pensais ajouter le champ à DB. mais j'étais incapable de savoir comment changer l'image avec du code. Quelqu'un peut-il me donner un exemple pour dessiner l'image avec du code et le changer en fonction d'une condition à l'exécution.

Répondre

0

J'ai fait la même chose dans mon application (mais je n'ai pas utilisé un adaptateur de curseur mais un adaptateur personnalisé, mais la logique devrait être la même). Ce dont j'avais besoin pour que cela fonctionne, c'était d'inclure un champ dans la base de données qui spécifie si le champ est traité ou non (ou un champ qui décide de l'image à montrer). Ensuite, vous devez lier l'adresse de vos images à ce champ. Je ne sais pas si vous pouvez le faire avec le simpleeconsoradapter, ou si vous avez besoin d'implémenter le vôtre. Puis, lorsqu'un utilisateur clique sur un élément, vous définissez simplement cet élément tel qu'il est traité dans la base de données et vous informez votre adaptateur qu'il a été mis à jour.

+0

Je pensais ajouter le champ à DB. mais je ne pouvais pas savoir comment changer l'image avec du code. quelqu'un peut-il me fournir un exemple pour ce problème si connu. – Raj

+1

Ce n'est pas trop dur. Vous devez mettre la main sur l'image-image dans le code (comme 'ImageView iv = findViewById (R.id.image_view_id); iv.setImage ...'. J'ai écrit ... parce que vous pouvez définir une image par en utilisant une ressource, un bitmap +++, et les noms de méthodes sont différents. – Alxandr