您的位置:首页 > 移动开发 > Android开发

Android为ListView的Item设置不同的布局

2014-04-17 18:28 423 查看
Adapter的getViewTypeCount和getItemViewType


Android为ListView的Item设置不同的布局

你需要做这些:

以下是代码:

public class MultipleItemsList extends ListActivity {

 

    private MyCustomAdapter mAdapter;

 

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        mAdapter = new MyCustomAdapter();

        for (int i = 1; i < 50; i++) {

            mAdapter.addItem("item " + i);

            if (i % 4 == 0) {

                mAdapter.addSeparatorItem("separator " + i);

            }

        }

        setListAdapter(mAdapter);

    }

 

    private class MyCustomAdapter extends BaseAdapter {

 

        private static final int TYPE_ITEM = 0;

        private static final int TYPE_SEPARATOR = 1;

 

         private LayoutInflater mInflater;

         private ArrayList mData = new ArrayList();

         private TreeSet mSeparatorsSet = new TreeSet();

 

        public MyCustomAdapter() {

            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        }

 

        public void addItem(final String item) {

            mData.add(item);

            notifyDataSetChanged();

        }

 

        public void addSeparatorItem(final String item) {

            mData.add(item);

            mSeparatorsSet.add(mData.size() - 1);

            notifyDataSetChanged();

        }

 

        @Override

        public int getItemViewType(int position) {

            return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;

        }

 

        @Override

        public int getViewTypeCount() {

            return 2;

        }

 

        @Override

        public int getCount() {

            return mData.size();

        }

 

        @Override

        public String getItem(int position) {

            return mData.get(position);

        }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: