Как преобразовать или использовать DataTable вместо Listview в Xamarin.Android, как я
показано на моей картинке, пожалуйста, помогите мне...
Обратите внимание, что я использую Xamarin.Android, а не Xamarin.Forms
вот мой код:
namespace CRM.PL
{
[Activity(Label = "AC_Expense_Search")]
public class AC_Expense_Search : Activity
{
ListView listView1;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.L_Expense_Search);
// Create your application here
//**********************************************
listView1 = FindViewById<ListView>(Resource.Id.listView1);
//**************** Load Data ****************************
LoadData();
//**************** Event ****************************
}
public DataTable DataTableCollection { get; set; }
void LoadData()
{
DataTable dt = cls_Epense.Expense_select_Top10();
DataTableCollection = dt;
listView1.Adapter = dt;
}
}
}





Вы не можете установить DataTable для ListView.Adapter напрямую.
DataTable,ListItem из ListView.ListItems как данные для адаптера ListView.Например:
void LoadData()
{
DataTable dt = cls_Epense.Expense_select_Top10();
DataTableCollection = dt;
List<ListItem> listItems = new List<ListItem>();
for (int i = 0; i < dt.Rows.Count; i++)
{
ListItem listitem = new ListItem();
listitem.FirstParamater = dt.Rows[i][0].ToString();
listitem.SecondParamater = dt.Rows[i][1].ToString();
listitem.ThirdParamater = dt.Rows[i][2].ToString();
...
listItems.Add(listitem);
}
listviewAdapter = new ListViewAdapter(this, listItems );
listView1.Adapter = listviewAdapter;
}
Пример кода ListItem, вам нужно настроить необходимые ListItem для вашего проекта.
public class ListItem
{
public string FirstParamater { get; set; }
public string SecondParamater { get; set; }
public string ThirdParamater { get; set; }
}
это не работает!
когда я запускаю приложение, оно выдает мне эту ошибку:
System.ArgumentOutOfRangeException: «Индекс был вне допустимого диапазона. Должно быть неотрицательным и меньше размера коллекции.
Имя параметра: индекс'
и вот мой код:
void LoadData()
{
DataTable dt = cls_Epense.Expense_select_Top10();
List<Expense_Search> listItems = new List<Expense_Search>();
for (int i = 0; i < dt.Rows.Count; i++)
{
listItems[i].FirstParamater = dt.Rows[i][0].ToString();
listItems[i].SecondParamater = dt.Rows[i][1].ToString();
listItems[i].ThirdParamater = dt.Rows[i][2].ToString();
}
var adapter = new ArrayAdapter<Expense_Search>(this,Android.Resource.Layout.SimpleListItem1, listItems);
listView1.Adapter = adapter;
}
public class Expense_Search
{
public string FirstParamater { get; set; }
public string SecondParamater { get; set; }
public string ThirdParamater { get; set; }
}
Извините, я установил данные для List<ListItem> напрямую. Вам нужно создать новый ListItem и установить для него значение, а затем добавить ListItem для List<ListItem>. Я обновил ответ, вы можете попробовать еще раз.
Пожалуйста, отредактируйте свой вопрос и добавьте соответствующий код непосредственно в текст вопроса, а не просто изображение.