如何在android中的gridview中显示arraylist

Ham*_*hid 9 android

我想在Gridview中显示Arraylist项目.我的Arraylist是这样的:

你好,你好

2你好你好

如果我将它绑定到gridview控件,如下所示:

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

  gridview.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

event_List是我的Arraylist.通过这种方法,我在gridview的单元格中获得了完整的Arraylist行或记录.我想在gridview的每个单元格中显示每个项目,如Arraylist的"Hello".像一个单元格中的1个,另一个单元格中的"Hello",依此类推.

提前致谢

san*_*tar 12

似乎您需要使用BaseAdapter,因为默认情况下ArrayAdapter无法将ArrayList元素划分为多个元素.

所以,它看起来如下:

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将产生六个项目的网格.在相应的网格视图Android指南中查看更多内容.