-1

I have a DataTable with names queried from SQL Server. I want to use those names to populate a ListView created in the .axml file. What would be the best way to handle this? This is what I have so far:

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);
        }
    }
}

and the .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>

However, the result of the above code is that it returns me to the first page of the application, and then the emulator shuts down.

The android device logging show those errors

4

1 回答 1

0

我现在确定如何在 c# 上实现这一点,但使用 java 我会:

listView.setOnItemClickListener(this);

让活动类实现侦听器,然后您需要添加方法

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    Log.d(TAG, "onListItemClick: " + position);

    // you coce here
}

希望这可以帮助

于 2012-04-28T15:18:00.567 回答