我有一个WebService,它返回用户详细信息,例如用户名,出生日期和地址。我将此Web服务称为 Android应用程序开发 Xamarin c#。但不知道如何在网格视图中显示数据(绑定数据)。有人可以提供示例代码或解释如何在网格视图中显示数据。
答案 0 :(得分:2)
您需要做的是为GridView和axml布局(GridView中的组件视图)创建适配器。例如,假设你想制作一个蓝色背景的瓷砖GridView,左下角的文字是白色的:
<强> tile.axml 强>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tile_layout"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#0000FF">
<TextView
android:id="@+id/tile_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:paddingLeft="6dp"
android:paddingBottom="2dp"
android:textColor="#ffffff" />
</RelativeLayout>
<强> TileAdapter.cs 强>
public class TileAdapter : BaseAdapter<BaseTileItem>
{
protected Activity _context = null;
protected List<BaseTileItem> _tileList = new List<BaseTileItem>();
public TileAdapter(Activity context, List<BaseTileItem> tileList)
: base()
{
this._context = context;
this._tileList = tileList;
}
public override BaseTileItem this[int position]
{
get { return this._tileList[position]; }
}
public override long GetItemId(int position)
{
return position;
}
public override int Count
{
get { return this._tileList.Count; }
}
/// Inflates the Tile layout and sets the values
public override Android.Views.View GetView(int position, Android.Views.View convertView, Android.Views.ViewGroup parent)
{
// Get our object for this position
var item = this._tileList[position];
//Try to reuse convertView if it's not null, otherwise inflate it from our item layout
var view = (convertView ??
this._context.LayoutInflater.Inflate(
Resource.Layout.tile,
parent,
false)) as RelativeLayout;
// Find references to each subview in the list item's view
TextView itemText = view.FindViewById<TextView>(Resource.Id.tile_text);
//Assign this item's values to the various subviews
itemText.Text = this._tileList[position].Text;
//Finally return the view
return view;
}
}
}
<强> TileBaseItem.cs 强>
//This is what you retrieve from the webservice
public class BaseTileItem
{
private string _text;
public BaseTileItem(string text)
{
this._text = text;
}
public string Text {
get {return this._text; }
set { this._text = value; }
}
然后在你的活动中:
private List<BaseTileItem> _usersList;
private TileAdapter _usersAdapter;
private GridView _usersGridView;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
this.SetContentView(Resource.Layout.startactivity);
//inflate all views
InflateViews();
this._usersList = //populate the list with BaseTileItem items
this._usersAdapter = new TileAdapter(this, this._usersList);
//creating the GridView
this._usersGridView = new GridView(this);
this._usersGridView.SetNumColumns(2);
this._usersGridView.SetGravity(GravityFlags.Center);
this._usersGridView.SetPadding(0, 20, 0, 20);
this._usersGridView.SetVerticalSpacing(20);
this._usersGridView.Adapter = this._usersAdapter;
}