我有一个DataTable,其名称是从SQL Server查询的。我想使用这些名称来填充在.axml文件中创建的ListView。处理此问题的最佳方法是什么?这是我到目前为止的内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.Data;
namespace MonoAndroidApplication3
{
[Activity(Label = "care sheet list test")]
public class caresheetlist : ListActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
DAL d = new DAL("Data Source=.;Initial Catalog=reptitips;Integrated Security=True");
DataTable tbl = d.FillAndReturn("select ReptileCommonName from reptiles order by ReptileCommonName", null, null, null);
string[] reptileNames = new string[tbl.Rows.Count];
for (int i = 0; i < reptileNames.Length; i++)
{
reptileNames[i] = tbl.Rows[i]["ReptileCommonName"].ToString();
}
ListAdapter = new ArrayAdapter<string>(this, Resource.Layout.listitem, reptileNames);
ListView.TextFilterEnabled = true;
ListView.ItemClick += delegate(object sender, ItemEventArgs args)
{
// When clicked, show a toast with the TextView text
Toast.MakeText(Application, ((TextView)args.View).Text, ToastLength.Short).Show();
};
//AutoCompleteTextView textView1 = (AutoCompleteTextView)FindViewById(autoComplete1);
//ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, Resource.Layout.listitem, reptileNames);
}
}
}
和.axml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="44dp"
android:orientation="vertical" >
<AutoCompleteTextView
android:id="@+id/autoComplete1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="AutoCompleteTextView" >
</AutoCompleteTextView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</ListView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
但是,以上代码的结果是它使我返回到应用程序的第一页,然后模拟器关闭了。
我现在确定如何在c#上实现此功能,但我会使用java:
listView.setOnItemClickListener(this);
让活动类实现侦听器,然后您需要添加方法
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Log.d(TAG, "onListItemClick: " + position);
// you coce here
}
希望这会有所帮助