Professional Documents
Culture Documents
NỘI DUNG
Chúng ta có thể sử dụng Android.Resource.Layout để thiết lập giao diện cho ListView,
các layout có sẵn bao gồm:
• TestListItem
• SimpleListItem1
• SimpleListItem2
• SimpleSelectableListItem
• SimpleListItemActivated1
• SimpleListItemActivated2
• SimpleListItemChecked
• SimpleListItemMultipleChoice
• SimpleListItemSingleChoice
Bài tập thực hành Phát triển ứng dụng trên thiết bị di động 2
• TwoLineListItem
• ActivityListItem
• SimpleExpandableListItem
Mỗi layout sẽ được thiết kế sẵn với các giao diện như sau:
Bài tập thực hành Phát triển ứng dụng trên thiết bị di động 3
android:paddingLeft="100dip"
/>
</LinearLayout>
<ImageView
android:id="@+id/imageView"
android:layout_width="48dp"
android:layout_height="48dp"
android:padding="5dp"
android:layout_alignParentRight="true" />
</RelativeLayout >
Click phải vào tên project, sau đó chọn Add -> New Item…
using Android.App;
using Android.Views;
using Android.Widget;
using System.Collections.Generic;
namespace CustomListView
{
public class HomeScreenAdapter : BaseAdapter<TableItem>
{
List<TableItem> items;
Activity context;
public HomeScreenAdapter(Activity context, List<TableItem> items)
: base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
Bài tập thực hành Phát triển ứng dụng trên thiết bị di động 7
view.FindViewById<ImageView>(Resource.Id.imageView).SetImageResource(item.id);
return view;
}
}
Lần lượt đặt tên các file hình ảnh là: image1.jpg , image2.jpg … image6.jpg
Bài tập thực hành Phát triển ứng dụng trên thiết bị di động 8
Bước 5: Tạo giao diện chính cho ứng dụng (file activity_main.xml):
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using AndroidX.AppCompat.App;
using System.Collections.Generic;
namespace CustomListView
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher =
true)]
public class MainActivity : AppCompatActivity
{
ListView listview;
List<TableItem> tableItems = new List<TableItem>();
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
listview = FindViewById<ListView>(Resource.Id.listview);
Ngoải ra, chúng ta có thể Thêm, Xóa, Sửa các item trên ListView bằng cách sau:
1. Gọi các phương thức thêm/xóa/sửa datasource
2. Gọi phương thức adapter.NotifyDataSetChanged();
Ví dụ 2: GridView
Cách xây dựng tương tự như ListView
Bước 2: Thiết kế giao diện chính cho ứng dụng (file activity_main.xml)
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gridView"
android:numColumns="2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
(có thể đưa nhiều hơn ứng dụng sinh động hơn)
namespace CustomListView
{
public class TableItem
{
public string Heading;
public string SubHeading;
public int id;
public TableItem(string Heading,string SubHeading, int id)
{
this.Heading = Heading;
this.SubHeading = SubHeading;
this.id = id;
}
}
}
Bài tập thực hành Phát triển ứng dụng trên thiết bị di động 12
using Android.App;
using Android.Views;
using Android.Widget;
using System.Collections.Generic;
namespace CustomListView
{
public class HomeScreenAdapter : BaseAdapter<TableItem>
{
List<TableItem> items;
Activity context;
public HomeScreenAdapter(Activity context, List<TableItem> items)
: base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override TableItem this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup
parent)
{
var item = items[position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = context.LayoutInflater.Inflate(Resource.Layout.CustomView,
null);
//view.FindViewById<TextView>(Resource.Id.textView1).Text =
item.Heading;
//view.FindViewById<TextView>(Resource.Id.textView2).Text =
item.SubHeading;
view.FindViewById<ImageView>(Resource.Id.imageView).SetImageResource(item.id);
return view;
}
}
}
android:padding="8dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="150dp"
android:layout_height="150dp"
android:padding="5dp"
android:layout_alignParentRight="true" />
</RelativeLayout >
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using AndroidX.AppCompat.App;
using System.Collections.Generic;
namespace CustomListView
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher =
true)]
public class MainActivity : AppCompatActivity
{
GridView gridView;
List<TableItem> tableItems = new List<TableItem>();
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
gridView = FindViewById<GridView>(Resource.Id.gridView);