谢谢你们的回答,但我决定回答我自己的问题,因为我觉得还有一些额外的细节很重要。
不幸的是,所有这些仍然不会产生我在原始问题中描述的外观。为此,我们将需要一个自定义布局(我现在正在处理),但是如果不这样做,这将与我们将要获得的一样接近。
此示例将向您展示如何使用自定义元素(在本例中为 Text+Icon)填充 GridView(AdapterView 的类型)
主要活动的xml
<!-- Item.xml -->
<RelativeLayout>
<TextView>
<EditText>
<GridView>
</RelativeLayout>
将添加到适配器的项目的 xml 文件。
<!-- Item.xml -->
<RelativeLayout>
<TextView>
<ImageView>
</RelativeLayout>
自定义布局类,在实施前观看(仅前 10 分钟左右):http ://www.youtube.com/watch?v=N6YdwzAvwOA
public class MyAdapter extends ArrayAdapter<Object> {
//members
public static class ViewHolder {
TextView tv;
ImageView iv;
}
private LayoutInflater m_Inflater;
private ArrayList<Object> m_UnderlyingData;
// context - context
// _resource - view defined in xml (will be added to adapter view)
// itemList - data to fit into view from resource
public MyAdapter(final Context _context, final int _resource, final ArrayList<Object> _itemList) {
super(_context, _resource, _itemList);
m_Inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
m_UnderlyingData = _itemList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder oHolder;
if(convertView == null){
convertView = m_Inflater.inflate(R.layout.word_item, null);
// -- remember views that make up the item layout
oHolder = new ViewHolder();
oHolder.tv = (TextView) convertView.findViewById(R.id.tv_word);
oHolder.iv = (ImageView) convertView.findViewById(R.id.iv_icon);
// -- reference to views that can be accessed outside of this class
convertView.setTag(oHolder);
}else{
oHolder = (ViewHolder) convertView.getTag();
}
//set new data
oHolder.tv.setText((String) m_UnderlyingData.get(position));
oHolder.iv.setImageResource(R.drawable.icon);
return convertView;
}
}
这是在活动中使用的代码:
GridView oWordGrid = (GridView) findViewById(R.id.myGrid);
ArrayList<Object> oArrayList = new ArrayList<Object>();
oArrayList.add("abc");
oArrayList.add("def");
oArrayList.add("blah");
ListAdapter myAdapter = new MyAdapter(this, R.layout.word_item, oArrayList);
oWordGrid.setAdapter(myAdapter);
附言
这里有一些更具教育意义的材料:
http ://www.youtube.com/watch?v=wDBM6wVEO70
http://www.youtube.com/watch?v=NYtB6mlu7vA