2013-06-11 181 views
0

我想在設置適配器之後或之前爲列表活動中的某個列表視圖上的某些項目自定義某些設置(顏色,邊距)。我怎樣才能做到這一點?有沒有可以覆蓋的功能?在ListActivity上自定義列表項(Android)

謝謝。

回答

0

這是你如何能做到自定義您的清單項目:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

<ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 

</LinearLayout> 

每個項目的佈局:

列表的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

<TextView 
     android:id="@+id/text" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     /> 

</LinearLayout> 

而最終您的活動:

public class MyActivity extends ListActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list_activitty); 

    final List<String> list = new ArrayList<String>(); 
    list.add("test"); 
    list.add("test"); 
    list.add("test"); 

    final CustomAdapter adapter = new CustomAdapter(this, list); 
    final ListView listView = getListView(); 
    listView.setAdapter(adapter); 
} 


public class CustomAdapter extends BaseAdapter { 

    private Context mContext; 
    private List<String> mList; 

    public CustomAdapter(Context context, List<String> list) { 
     mContext = context; 
     mList = list; 
    } 

    @Override 
    public int getCount() { 
     return mList.size(); 
    } 

    @Override 
    public String getItem(int position) { 
     return mList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

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

     final Holder holder; 

     if (convertView == null) { 

      // if it is the first time you create the row 
      // you get the layout of each row here 
      convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, null); 

      // you keep your layout in a holder 
      holder = new Holder(); 
      holder.mText = (TextView) convertView.findViewById(R.id.text); 
      convertView.setTag(holder); 

     } else { 

      // if the row has already been created, you get it from the holder 
      holder = (Holder) convertView.getTag(); 
     } 

     // you do what you want with the content 

     holder.mText.setText(getItem(position)); 
     holder.mText.setTextColor(Color.BLUE); 

     return convertView; 
    } 

    private class Holder { 
     public TextView mText; 
    } 
} 
} 
+0

謝謝Esteam! – SWE