Xamarin - Andriod 视图


列表视图

列表视图是一个用户界面元素,显示可滚动的项目列表。

将数据绑定到列表视图

在此示例中,您将创建一个显示星期几的列表视图。首先,让我们创建一个新的 XML 文件并将其命名为listViewTemplate.xml

listViewTemplate.xml中,我们添加一个新的文本视图,如下所示。

<?xml version = "1.0" encoding = "utf-8" ?> 
<TextView xmlns:android = "http://schemas.android.com/apk/res/android" 
android:id = "@+id/textItem"  
android:textSize ="20sp" 
android:layout_width = "fill_parent"  
android:layout_height = "wrap_content"/>

接下来,转到Main.axml并在线性布局中创建一个新的列表视图。

<ListView 
   android:minWidth="25px" 
   android:minHeight="25px" 
   android:layout_width="match_parent" 
   android:layout_height="match_parent" 
   android:id="@+id/listView1" />

打开MainActivity.cs并键入以下代码将数据绑定到我们创建的列表视图。该代码必须编写在OnCreate()方法内。

SetContentView(Resource.Layout.Main); 
var listView = FindViewById<ListView>(Resource.Id.listView1); 
var data = new string[] { 
   "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 
}; 
listView.Adapter = new ArrayAdapter(this, Resource.Layout.ListViewTemplate, data); 

var data = new string[]只是将我们的项目保存为数组。

数组适配器将集合中的项目作为视图返回。默认情况下,Array Adapter 使用默认的 textView 来显示每个项目。在上面的代码中,我们在ListViewTemplate.xml中创建了自己的文本视图,并使用下面所示的构造函数引用它。

ArrayAdapter(this, Resource.Layout.ListViewTemplate, data); 

最后,构建并运行您的应用程序以查看输出。

列表视图应用程序

网格视图

gridView 是一个视图组,允许应用程序以二维方式(可滚动网格)布局内容。

要添加 GridView,请创建一个新项目并将其命名为gridViewApp。转到Main.axml并添加一个网格,如下所示。

<?xml version = "1.0" encoding="utf-8"?> 
<GridView xmlns:android = "http://schemas.android.com/apk/res/android" 
   android:id = "@+id/gridview" 
   android:layout_width = "fill_parent" 
   android:layout_height = "fill_parent" 
   android:columnWidth = "90dp" 
   android:numColumns = "auto_fit" 
   android:verticalSpacing = "10dp" 
   android:horizontalSpacing = "10dp" 
   android:stretchMode = "columnWidth" 
   android:gravity = "center" />

接下来,创建一个新类并将其命名为ImageAdpter.cs。该类将包含网格中显示的所有项目的适配器类。

在ImageAdapter内,添加以下代码 -

public class ImageAdapter : BaseAdapter { 
   Context context; 
   public ImageAdapter(Context ch) {  
      context = ch; 
   } 
      
   public override int Count { 
      get { 
         return cars.Length; 
      } 
   } 
      
   public override long GetItemId(int position) { 
   return 0; 
   } 
      
   public override Java.Lang.Object GetItem(int position) { 
      return null; 
   } 
      
   public override View GetView(int position, 
      View convertView, ViewGroup parent) { 
      ImageView imageView; 
      if (convertView == null) {   
         imageView = new ImageView(context); 
         imageView.LayoutParameters = new GridView.LayoutParams(100, 100); 
         imageView.SetScaleType(ImageView.ScaleType.CenterCrop); 
         imageView.SetPadding(8, 8, 8, 8); 
      } else { 
         imageView = (ImageView)convertView; 
      } 
             
      imageView.SetImageResource(cars[position]); 
      return imageView; 
   } 
   
   int[] cars = { 
      Resource.Drawable.img1, Resource.Drawable.img2, 
      Resource.Drawable.img3, Resource.Drawable.img4, 
      Resource.Drawable.img5, Resource.Drawable.img6, 
   }; 
}            

在上面的代码中,我们简单地将汽车图像绑定到图像适配器。接下来,打开MainActivity.cs并在setContentView()后面添加以下代码。

var gridview = FindViewById<GridView>(Resource.Id.gridview); 
gridview.Adapter = new ImageAdapter(this); 
gridview.ItemClick += delegate(object sender, 
   AdapterView.ItemClickEventArgs args) { 
      Toast.MakeText(this, 
         args.Position.ToString(), ToastLength.Short).Show(); 
};

上面的代码在main.axml中找到gridView并将其绑定到imageAdapter类。Gridview.ItemClick创建一个onClick事件,当用户单击图像时,该事件返回所选图像的位置。

现在,构建并运行您的应用程序以查看输出。

网格视图