栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android ListView标头

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android ListView标头

下面是我如何做到这一点,键

getItemViewType
getViewTypeCount
Adapter
类。
getViewTypeCount
返回列表中有多少种项目,在这种情况下,我们有一个标题项和一个事件项,所以两个。
getItemViewType
应该返回
View
输入处的类型
position

那么Android将带你传递正确类型的护理

View
convertView
自动。

首先,我们有一个接口,我们的两个列表项类型将实现

public interface Item {    public int getViewType();    public View getView(LayoutInflater inflater, View convertView);}

然后,我们有一个适配器,其中包含 Item

public class TwoTextArrayAdapter extends ArrayAdapter<Item> {    private LayoutInflater mInflater;    public enum RowType {        LIST_ITEM, HEADER_ITEM    }    public TwoTextArrayAdapter(Context context, List<Item> items) {        super(context, 0, items);        mInflater = LayoutInflater.from(context);    }    @Override    public int getViewTypeCount() {        return RowType.values().length;    }    @Override    public int getItemViewType(int position) {        return getItem(position).getViewType();    }@Overridepublic View getView(int position, View convertView, ViewGroup parent) {   return getItem(position).getView(mInflater, convertView);}

编辑 更好地为性能..可以滚动时注意到

private static final int TYPE_ITEM = 0; private static final int TYPE_SEPARATOR = 1; public View getView(int position, View convertView, ViewGroup parent)  {    ViewHolder holder = null;    int rowType = getItemViewType(position);    View View;    if (convertView == null) {        holder = new ViewHolder();        switch (rowType) { case TYPE_ITEM:     convertView = mInflater.inflate(R.layout.task_details_row, null);     holder.View=getItem(position).getView(mInflater, convertView);     break; case TYPE_SEPARATOR:     convertView = mInflater.inflate(R.layout.task_detail_header, null);     holder.View=getItem(position).getView(mInflater, convertView);     break;        }        convertView.setTag(holder);    }    else    {        holder = (ViewHolder) convertView.getTag();    }    return convertView; } public static class ViewHolder {    public  View View; } }

然后,我们对工具进行分类,Item并为正确的布局充气。在你的情况下,你将拥有一个Header类和一个ListItem类。

   public class Header implements Item {    private final String         name;    public Header(String name) {        this.name = name;    }    @Override    public int getViewType() {        return RowType.HEADER_ITEM.ordinal();    }    @Override    public View getView(LayoutInflater inflater, View convertView) {        View view;        if (convertView == null) { view = (View) inflater.inflate(R.layout.header, null); // Do some initialization        } else { view = convertView;        }        TextView text = (TextView) view.findViewById(R.id.separator);        text.setText(name);        return view;    }}

然后ListItem上课

    public class ListItem implements Item {    private final String         str1;    private final String         str2;    public ListItem(String text1, String text2) {        this.str1 = text1;        this.str2 = text2;    }    @Override    public int getViewType() {        return RowType.LIST_ITEM.ordinal();    }    @Override    public View getView(LayoutInflater inflater, View convertView) {        View view;        if (convertView == null) { view = (View) inflater.inflate(R.layout.my_list_item, null); // Do some initialization        } else { view = convertView;        }        TextView text1 = (TextView) view.findViewById(R.id.list_content1);        TextView text2 = (TextView) view.findViewById(R.id.list_content2);        text1.setText(str1);        text2.setText(str2);        return view;    }}

和一个简单Activity的显示它

public class MainActivity extends ListActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        List<Item> items = new ArrayList<Item>();        items.add(new Header("Header 1"));        items.add(new ListItem("Text 1", "Rabble rabble"));        items.add(new ListItem("Text 2", "Rabble rabble"));        items.add(new ListItem("Text 3", "Rabble rabble"));        items.add(new ListItem("Text 4", "Rabble rabble"));        items.add(new Header("Header 2"));        items.add(new ListItem("Text 5", "Rabble rabble"));        items.add(new ListItem("Text 6", "Rabble rabble"));        items.add(new ListItem("Text 7", "Rabble rabble"));        items.add(new ListItem("Text 8", "Rabble rabble"));        TwoTextArrayAdapter adapter = new TwoTextArrayAdapter(this, items);        setListAdapter(adapter);    }}

布局

R.layout.header

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >    <TextView                android:id="@+id/separator"        android:text="Header"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#757678"        android:textColor="#f5c227" /></LinearLayout>

布局

R.layout.my_list_item

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" >    <TextView        android:id="@+id/list_content1"        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:layout_margin="5dip"        android:clickable="false"        android:gravity="center"        android:longClickable="false"        android:paddingBottom="1dip"        android:paddingTop="1dip"        android:text="sample"        android:textColor="#ff7f1d"        android:textSize="17dip"        android:textStyle="bold" />    <TextView        android:id="@+id/list_content2"        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:layout_margin="5dip"        android:clickable="false"        android:gravity="center"        android:linksClickable="false"        android:longClickable="false"        android:paddingBottom="1dip"        android:paddingTop="1dip"        android:text="sample"        android:textColor="#6d6d6d"        android:textSize="17dip" /></LinearLayout>

布局

R.layout.activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >    <ListView        android:id="@android:id/list"        android:layout_width="fill_parent"        android:layout_height="fill_parent" /></RelativeLayout>

你也可以变得更

ViewHolders
喜欢并使用,异步加载内容或任何你喜欢的内容。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号