我想在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指南中查看更多内容.
| 归档时间: |
|
| 查看次数: |
26718 次 |
| 最近记录: |