2011-12-06 33 views
0

我想添加一个标题的自定义列表视图从列表中删除。我发现了一些提示,但可以解决我的问题。因此,也许这里有人能给出一个线索:对标题的自定义列表视图的建议

我的课(包括两个类)

package com.droidfish.apps.acli; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

public class ListProduct2 extends Activity { 
private static ArrayList<String> sProducts; 
private static String[] sPro; 
private Integer iType; 

private static class EfficientAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 

    public EfficientAdapter(Context context) { 
     mInflater = LayoutInflater.from(context); 

    } 

    public int getCount() { 
     return sPro.length; 
    } 

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

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.list_item, null); 
      holder = new ViewHolder(); 
      holder.text = (TextView) convertView 
        .findViewById(R.id.listitemdef); 
      Log.d("Create item", sPro[position]); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.text.setText(sPro[position]); 

     return convertView; 
    } 

    static class ViewHolder { 
     TextView text; 
    } 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.listproducts); 
    savedInstanceState = this.getIntent().getExtras(); 
    sProducts = savedInstanceState.getStringArrayList("aircrafts"); 
    sPro = (String[]) sProducts.toArray(new String[0]); 
    iType = savedInstanceState.getInt("type"); 
    ListView l1 = (ListView) findViewById(R.id.ListView01); 
    TextView titleList = (TextView) findViewById(R.id.titleProductList); 
    TextView titleList2 = new TextView(this); 
    titleList2.setText("Manufacturer"); 
    l1.addHeaderView(titleList2); 
    l1.setAdapter(new EfficientAdapter(this)); 

(这一点,android.R.layout.simple_list_item_1,SPRO)); }

private static final String[] country = { "Iceland", "India", "Indonesia", 
     "Iran", "Iraq", "Ireland", "Israel", "Italy", "Laos", "Latvia", 
     "Lebanon", "Lesotho ", "Liberia", "Libya", "Lithuania", 
     "Luxembourg" }; 

} 

我的列表视图

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
<ListView 
    android:id="@+id/ListView01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

<TextView 
    android:id="@+id/titleProductList" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Title" /> 
</LinearLayout> 

布局列表项目布局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:gravity="left|center" 
android:paddingBottom="5px" 
android:paddingLeft="5px" 
android:paddingTop="5px" > 
<TextView 
    android:id="@+id/listitemdef" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="hi" 
    android:textColor="#FFFF00" > 
</TextView> 
</LinearLayout> 

任何意见是值得欢迎的

+2

当你说标题,你的意思是在listview的顶部的textview不滚动的listview的内容? – dmon

+0

好的,...那就是我想要的。我想只是在列表视图上添加一个textview,但它没有工作。 addHeaderView我没有工作,因为你可以看到。 – droidfish

回答

0

我看到你的问题,你没有指定你的LinearLayout的orientation属性,并且默认是水平的。所以textview被添加到您的列表视图的权利。另外,创建标题视图的最简单方法是使用layout_weight属性。所以,试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > <!-- missing orientation--> 
    <TextView 
    android:id="@+id/titleProductList" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Title" /> 

    <ListView 
    android:id="@+id/ListView01" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" > <!-- weight attribute --> 
</ListView> 


</LinearLayout> 
+0

非常感谢,......这个结果。 – droidfish

1

你可以使用addHeaderView方法描述here

+0

其实我也照你所看到的那样,它在结尾 – droidfish