2012-09-25 7 views
0

enter image description hereDifférencier le titre de la description

J'ai un listview. Je veux différencier le titre de la descitption. Je veux afficher le titre une couleur et la description est autre colore. Comment puis-je faire ceci? J'ai le code suivant pour créer listview.

Activité:

public class Lisearch extends Activity { 
    private ListView lv; 
    private EditText et; 
    private String listview_array[] = {"ONE:\n one is the first letter"}; 

private ArrayList<String> array_sort= new ArrayList<String>(); 
    int textlength=0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_lisearch); 
     TextView tv=(TextView)findViewById(R.id.text); 
     lv = (ListView) findViewById(R.id.ListView01); 
     et = (EditText) findViewById(R.id.EditText01); 
     //lv.setAdapter(new ArrayAdapter<String>(this, 
     //R.layout.activity_lisearch, listview_array)); 

     et.addTextChangedListener(new TextWatcher() 
     { 
     public void afterTextChanged(Editable s) 
     { 
                     // Abstract Method of TextWatcher Interface. 
     } 
     public void beforeTextChanged(CharSequence s, 
     int start, int count, int after) 
     { 
     // Abstract Method of TextWatcher Interface. 
     } 
     public void onTextChanged(CharSequence s, 
     int start, int before, int count) 
     { 
     textlength = et.getText().length(); 
     array_sort.clear(); 
     for (int i = 0; i < listview_array.length; i++) 
     { 
     if (textlength <= listview_array[i].length()) 
     { 
     if(et.getText().toString().equalsIgnoreCase(
     (String) 
     listview_array[i].subSequence(0, 
     textlength))) 
     { 
        array_sort.add(listview_array[i]); 
        } 
        } 
     } 
     lv.setAdapter(new ArrayAdapter<String> 
     (Lisearch.this, 
     R.layout.list,R.id.text, array_sort)); 

search.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
       android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:background="@drawable/aa"     
       > 
<EditText android:id="@+id/EditText01" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:hint="Search" 
android:padding="5dp"> 
</EditText> 

<ListView android:id="@+id/ListView01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
    android:listSelector="@drawable/list_selector" 
    android:layout_weight="1" 
    > 
</ListView> 
</LinearLayout> 

list.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/text" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:paddingLeft="6dp" 
    android:textSize="15sp" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:textColor="#FF4444" 
    android:textStyle="bold" 
    android:layout_marginLeft="10dp" 


/> 
+0

utiliser l'adaptateur personnalisé, référez-vous ce lien http://stackoverflow.com/questions/7361135/how-to-change-color-and-font-on-listview – rajeshwaran

Répondre

0

Utilisez textview séparé pour le titre et la description dans list.xml .And utilisation souhaitée couleur pour le texte.

public class CustomAdapter extends BaseAdapter { 

    private Context mContext; 
     String[] array =null; 


    public CustomAdapter(Context c,String[] array) { 
     this.mContext = c; 
     this.array= array; 

    } 


    public int getCount() { 
     return count; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

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

     LayoutInflater inflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.list, null); 

     TextView textView1 = (TextView) view.findViewById(R.id.textView1); 
       TextView textView2 = (TextView) view.findViewById(R.id.textView2); 

     return view; 
    } 


} 

Utilisez cet adaptateur pour votre liste.

+1

Comment puis-je ajouter progammatically? – Ram

+0

Si votre problème est résolu acceptez la réponse. –

0

Dans votre list.xml, avez 2 TextViews, un pour le titre et une description, quelque chose comme celui ci-dessous

<TextView android:id="@+id/title" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:text="@string/titleText" 
    android:textSize="25dp" /> 
<TextView android:id="@+id/description" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:textSize="15dp" 
    android:layout_below="@id/title" android:textColor="#00FF00" /> 

De cette façon, vous pouvez avoir des couleurs séparées, ajoutez votre adaptateur comme suit

SimpleAdapter adapter = new SimpleAdapter(this,list,R.layout.list,new String[] {"Title","Description"},new int[] {R.id.title,R.id.description}); 
setListAdapter(adapter); 
+0

Un listviewarray est suffisant? – Ram

+0

Un tableau ListView devrait suffire. –

+0

Erreur sur cette ligne: lv.setAdapter (new ArrayAdapter \t \t (Lisearch.this, R.layout.list, nouvelle chaîne [] {"text", "text1"} , R.id.text1}, array_sort)); – Ram

Questions connexes