2017-10-19 21 views
0

I utilisé SimpleCursorAdapter à populte un ListView avec des noms de contacts. Dans le listview.onItemClickListener changer la couleur du textview de vue avec le code suivant -ListView éléments sélectionnés couleur d'arrière-plan lors de la sélection de l'utilisateur

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String a = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      Toast.makeText(contacts.this, "item clicked : \n"+ a + " " + Integer.toString(position) , Toast.LENGTH_SHORT).show(); 
      TextView tv =(TextView) view.findViewById(R.id.txtName); 

      tv.setTextColor(getResources().getColor(R.color.colorAccent)); 

     } 
    }); 

chose est quand la couleur est changé pour un élément, il modifie également l'élément dans la page suivante lorsque l'utilisateur faire défiler la liste.

Y at-il une méthode de getView que je peux passer outre le SimpleCursorAdapter?

+0

Je trouve une réponse à ma question dans ce qui suit [lien] (https://stackoverflow.com/questions/2398767/trying-to-override-getview-in -a-simplecursoradapter-gives-nullpointerexceptio) – Shai

+0

Modifier la couleur du texte par défaut dans getView() – nomag

Répondre

0
 private class ColorTestAdapter extends ArrayAdapter<String> { 
      private final Context context; 
      private final String[] values; 

      public ColorTestAdapter(Context context, String[] values) { 
       super(context, R.layout.list_item, values); 
       this.context = context; 
       this.values = values; 
      } 

      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 
       LayoutInflater inflater = (LayoutInflater) context 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       View layout_view = inflater.inflate(R.layout.list_item, parent, false); 
       TextView tv = (TextView) layout_view.findViewById(R.id.list_textview); 
       // Set text 
       tv.setText(values[position]); 
       // Set color depending on position 
       int textColorId = R.color.black; // Default color 
       if(position == 1){ 
         textColorId = R.color.red; 
       } 

       } 
       tv.setTextColor(getResources().getColor(textColorId)); 
       return layout_view; 
      } 
     } 

Dans oncreate

myListView = (ListView)findViewById(R.id.main_listView); 
     ColorTestAdapter adapter = new ColorTestAdapter(this,myLists); 
     myListView.setAdapter(adapter);