2012-09-25 142 views
0

enter image description here区分标题与描述

我有一个列表式视图。我想区分标题和贬义。我想显示标题一种颜色和描述是其他颜色。我怎样才能做到这一点?我有以下代码来创建列表视图。

活动:

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

使用自定义适配器,请参阅此链接http://stackoverflow.com/questions/7361135/how-to-change-color-and-font-on-listview – rajeshwaran

回答

0

使用单独为标题和描述在list.xml。而使用所需的TextView文本的颜色。

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; 
    } 


} 

使用此适配器为您的listview。

+1

如何添加progammatically? – Ram

+0

如果您的问题解决了,请接受答案。 –

0

在你list.xml,有2个TextViews,一个标题和一个用于描述,像一个下面

<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" /> 

这样你可以有单独的颜色,添加适配器如下

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

一个listviewarray就够了吗? – Ram

+0

一个ListView数组应该就足够了。 –

+0

错误此行:lv.setAdapter(new ArrayAdapter \t \t(Lisearch.this,R.layout.list,new String [] {“text”,“text1”},new int [] {R.id.text ,R.id.text1},array_sort)); – Ram