gpt4 book ai didi

c# - ListView 项目绑定(bind)

转载 作者:行者123 更新时间:2023-11-29 21:12:30 26 4
gpt4 key购买 nike

我有一个场景,我需要在 android xamarin 中使用音频文件名绑定(bind) ListView。它应该只显示音频名称的前 5 个字符。我通过拆分它来做到这一点,它工作正常。

adapter = new ArrayAdapter<string> ( this , Resource.Layout.list_item ,       Resource.Id.audio_names , lstSearchResult.ToArray () );
listResult.Adapter = adapter;

在上面的代码中,lstSearchResult 包含 5 个字符的音频名称。

问题是:onItemClick 我需要获取完整的音频名称,以便稍后播放。我该怎么做?

listResult.ItemClick += delegate(object sender , AdapterView.ItemClickEventArgs e )
{
string strItem= adapter.GetItem(e.Position);
};

任何建议/替代 vl 不胜感激

最佳答案

最好的办法是创建自定义适配器。首先为一行创建您自己的布局。将其称为“SongListRow”(或任何其他名称)。

然后为您的歌曲创建一个类:

public class Song {
public string Name { get; set; }
public string File { get; set; }
}

然后创建适配器:

public class SongListAdapter : BaseAdapter<Song> {
private List<Song> _items;
private Activity _context;

public SongListAdapter(Activity context, List<Song> songs)
{
this._items = songs;
this._context = context;
}

public override Song this[int position]
{
get { return this._items[position]; }
}

public override int Count
{
get { return this._items.Count; }
}

public override long GetItemId(int position)
{
return position;
}

public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = this._items[position];
View view = convertView;
//If there is nothing to reuse, then create view from your row layout
if (view == null)
view = this._context.LayoutInflater.Inflate(Resource.Layout.SongListRow, null);

view.FindViewById<TextView>(Resource.Id.SongTitle).Text = item.Name;

return view;
}
}

现在,在您的 Activity 中,为您的适配器声明一个变量

private SongListAdapter _songsAdapter;

现在创建一个通用的歌曲列表,创建适配器并将歌曲列表传递给适配器的构造函数。然后你可以这样做:

listResult.Adapter = this._songsAdapter;
listResult.ItemClick += (s,e) => {
var fileName = this._songsAdapter[e.Position].File;
// Play your song
}

关于c# - ListView 项目绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22380191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com