2012-02-24 3 views
1

J'utilise un ListView avec le code ci-dessous. Le problème est lorsque je clique sur un élément de la liste, il n'est pas en surbrillance. Vous voyez, j'ai essayé d'utiliser arg0.setBackgroundColor(Color.RED); mais il en résulte lorsque je clique sur l'élément et ne laisse pas mon doigt en haut, rien ne se passe, quand je clique sur l'élément et laisse mon doigt en haut, il est surligné ET reste surligné. Comment faire cela quand je laisse mon doigt vers le haut la surbrillance est supprimée? Je ne sais pas pourquoi cela ne se comporte pas comme une simple liste.Listview with listadapter highlight item

private class ListAdapter extends ArrayAdapter { 
     private ArrayList mList; 
     private Context mContext; 

     public ListAdapter(Context context, int textViewResourceId, ArrayList list) { 
      super(context, textViewResourceId, list); 
      this.mList = list; 
      this.mContext = context; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = convertView; 

      try { 
       if (view == null) { 
        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        view = vi.inflate(R.layout.list_item, null); 
       } 

       final Object listItem = mList.get(position); 
       if (listItem != null) { 

        ((TextView) view.findViewById(R.id.tv_name)).setText(((HotOrNot) listItem).getName()); 
        view.setOnClickListener(new OnClickListener() { 
         public void onClick(View arg0) { 
          arg0.setBackgroundColor(Color.RED); 
          Toast.makeText(SQLView.this, "ID: " + ((HotOrNot) listItem).getID(), Toast.LENGTH_SHORT).show(); 
          Toast.makeText(SQLView.this, "Name: " + ((HotOrNot) listItem).getName(), Toast.LENGTH_SHORT).show(); 
          Toast.makeText(SQLView.this, "Descr: " + ((HotOrNot) listItem).getDescription(), Toast.LENGTH_SHORT).show(); 


          // finish(); 
         } 
        }); 
       } 
      } catch (Exception e) { 
       //Log.i(Splash.ListAdapter.class.toString(), e.getMessage()); 
      } 
      return view; 
     } 
    } 
+0

Jetez un oeil à cette question - il décrit la solution à ce dont vous avez besoin. En bref, vous devez utiliser un sélecteur pour l'arrière-plan de votre élément de liste. http://stackoverflow.com/questions/9434317/listview-with-listadapter-highlight-item –

Répondre

0

mettre ce fichier xml dans votre dossier drawable et en arrière-plan set list_item dans MainLayout

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

     <item android:drawable="#FFFFFF" android:state_pressed="false" android:state_selected="false"/> 
     <item android:drawable="#FF00FF" android:state_pressed="true" android:state_selected="false"/> 
     <item android:drawable="#FF00FF" android:state_pressed="true" android:state_selected="true"/> 

    </selector> 
+0

ce que je ne peux pas comprendre votre commentaire –

+0

vous ne pouvez pas comprendre ma réponse .... Première copie ma réponse de puis faites un clic droit sur le dossier drawable et créez le fichier xml et donnez le nom list_bg et sauvegardez dans le dossier drawable (Dont dans la disposition), puis collez ,,, alors dans votre layout list_item avez Any layout et donnez android: background = "@ drawable/list_bg" puis nettoyer et construire votre projet et Rerun –