9

Arraylist アイテムを Gridview に表示したい。私のArraylistは次のようなものです:

1 ハローハロー

2 ハローハロー

次のように gridview コントロールにバインドすると:

  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の「Hello」のような各項目を表示したい。あるセルの 1 のように、別のセルの「こんにちは」など。

前もって感謝します

4

2 に答える 2

14

デフォルトでは要素を要素数に分割できないため、 BaseAdapterを使用する必要があるようです。ArrayAdapterArrayList

したがって、次のようになります。

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 つのアイテムでグリッドを生成します。詳細については、対応するGrid View の Android ガイド を参照してください。

于 2013-07-02T04:50:31.167 に答える
2

または、これを使用するかもしれません:

MainActivity.java:

import android.os.Bundle;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    List<String> values=new ArrayList<String>();
    values.add("Home");values.add("About");values.add("Contact");values.add("Help");values.add("Index");
    values.add("Home");values.add("About");values.add("Contact");values.add("Help");values.add("Index");
    GridView myGrid=(GridView)findViewById(R.id.grid);

    myGrid.setAdapter(new ArrayAdapter<String>(this,R.layout.cell,values));

   }
}

あなたの activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/mySelection" />
<GridView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/grid"
    android:columnWidth="75dip"
    android:gravity="center"
    android:horizontalSpacing="5dip"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth"
    android:verticalSpacing="75dip">

</GridView>

レイアウト フォルダーに新しい xml ファイルを作成し、cell.xml という名前を付けて、これを入れます。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp">

さあ、走って楽しんでください。これは出力です:

万歳

于 2016-05-11T15:44:39.817 に答える