我想实现网格,它将动态填充。我想知道实现此相对布局(列表视图)或网格布局的最佳方法是什么?
答案 0 :(得分:3)
您可以动态生成GridView。
GridView将根据您的需要包含ImageView和TextView。您必须使用自定义适配器。在它的getView
方法中,填充ImageView和TextView。
示例:强>
GridView item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imgItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/txtItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="trebuchet"
android:textColor="@android:color/black"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
Java代码:
项目的POJO类:
public class Item
{
String title;
Drawable image;
//getter setter
}
适配器类:
//getView method in your adapter class
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View itemView = convertView;
ViewHolder holder = null;
if (itemView == null)
{
final LayoutInflater layoutInflater =
(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
itemView = layoutInflater.inflate(resourceId, parent, false);
holder = new ViewHolder();
holder.imgItem = (ImageView) itemView.findViewById(R.id.imgItem);
holder.txtItem = (TextView) itemView.findViewById(R.id.txtItem);
itemView.setTag(holder);
}
else
{
holder = (ViewHolder) itemView.getTag();
}
Item item = getItem(position);
holder.imgItem.setImageDrawable(item.getImage());
holder.txtItem.setText(item.getTitle());
return itemView;
}
现在在Activity类中添加适配器数据,然后将该适配器设置为GridView。
希望它有所帮助。
答案 1 :(得分:1)
你想要GridView
。简单示例here。在您的情况下,您需要为每一行创建一个XML布局,以适应TextView和ImageView。其他答案在这里解决。
答案 2 :(得分:0)
只需将GridView
与自定义适配器一起使用即可。每次希望视图更新时,请在适配器上调用notifyDataSetChanged()
。