如何在Android的GridView控件数组列表显示 [英] How to display arraylist in gridview in android

查看:84
本文介绍了如何在Android的GridView控件数组列表显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要显示的GridView ArrayList的项目。我的ArrayList是这样的:

I want to display Arraylist items in Gridview. My Arraylist is like this :

1你好你好

2的Hello你好

如果我把它绑定到一个GridView控件是这样的:

If I bind it to a gridview control like this :

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, event_list);

  gridview.setAdapter(adapter);

EVENT_LIST是我的ArrayList。通过这种方法,我得到的GridView的小区中的完整的ArrayList行或记录。我想在GridView中的每一个单元格中显示的每个项目,如你好的ArrayList。像在一个小区中,你好,在其他小区等1

event_List is my Arraylist. Through this approach I get a complete Arraylist row or record in a cell of gridview . I want to display each item like "Hello" of Arraylist in each cell of gridview. Like 1 in one cell , "Hello" in another cell and so on.

在此先感谢

推荐答案

看来你需要使用 BaseAdapter ,因为默认的 ArrayAdapter 是不是能做到 ArrayList的分元素为元素的个数。

Seems You need to use BaseAdapter, because default ArrayAdapter is not able to accomplish dividing of ArrayList element into number of elements.

所以,它看起来像下面这样:

So, it would look like the following:

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final GridView grid = (GridView) findViewById(R.id.gridView);
        final ArrayList<String> items = new ArrayList<String>();

        items.add("1 , Hello11 , Hello12");
        items.add("2 , Hello21 , Hello22");

        grid.setAdapter(new GridAdapter(items));
    }

    // Assume it's known
    private static final int ROW_ITEMS = 3;

    private static final class GridAdapter extends BaseAdapter {

        final ArrayList<String> mItems;
        final int mCount;

        /**
         * Default constructor
         * @param items to fill data to
         */
        private GridAdapter(final ArrayList<String> items) {

            mCount = items.size() * ROW_ITEMS;
            mItems = new ArrayList<String>(mCount);

            // for small size of items it's ok to do it here, sync way
            for (String item : items) {
                // get separate string parts, divided by ,
                final String[] parts = item.split(",");

                // remove spaces from parts
                for (String part : parts) {
                    part.replace(" ", "");
                    mItems.add(part);
                }
            }
        }

        @Override
        public int getCount() {
            return mCount;
        }

        @Override
        public Object getItem(final int position) {
            return mItems.get(position);
        }

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

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

            View view = convertView;

            if (view == null) {
                view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
            }

            final TextView text = (TextView) view.findViewById(android.R.id.text1);

            text.setText(mItems.get(position));

            return view;
        }
    }
}

会产生网格6个项目。查看更多相应的Andr​​oid指南网格视图

这篇关于如何在Android的GridView控件数组列表显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆