【问题标题】:How to get item when selected listview on xamarin android?在xamarin android上选择listview时如何获取项目?
【发布时间】:2016-04-21 15:39:24
【问题描述】:
string[] items = new string[] { "Alternative Rock","Classical"}

lst.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs e) {    
    FragmentTransaction fragmentTx=this.FragmentManager.BeginTransaction();
    TracksByGenres fragTrack=new TracksByGenres();
    //get our item from listview

    fragmentTx.Replace(Resource.Id.fragmentContainer,fragTrack,.....);  
    fragmentTx.AddToBackStack(null);
    fragmentTx.Commit();
};

TracksByGenres.cs

public async override void OnActivityCreated(Bundle savedInstancesState)
{
    base.OnActivityCreated (savedInstancesState);
    // what do I write?
}

如何在 Xamarin.Android 上从 ListView 获取所选项目并创建一个返回旧片段的后退按钮?

【问题讨论】:

    标签: listview xamarin xamarin.android selecteditem


    【解决方案1】:

    ItemClickEventArgsPosition会告诉你选中项的索引

    lst.ItemClick += delegate(object sender, AdapterView.ItemClickEventArgs e) {
    
      var selected = items[e.Position];
    }
    

    【讨论】:

    • 如何从不同的fragment.ragmentTx.Replace(Resource.Id.fragmentContainer,fragTrack,items[e.Position])中获取items[e.Position];
    【解决方案2】:

    在您的ListFragment 子类中覆盖OnListItemClick 以接收点击的项目

    public class myListFragment : ListFragment
    {
        string[] data =  { "Alternative Rock","Classical" } ;
    
        protected override void OnCreate (Bundle bundle)
        {
           base.OnCreate (bundle);
           ArrayAdapter adapter = new ArrayAdapter (this,
           Resource.Layout.TextViewItem, data);
           ListAdapter = adapter;
        }
    
        protected override void OnListItemClick (ListView l, View v,
        int position, long id)
        {
           base.OnListItemClick (l, v, position, id);
           Toast.MakeText (this, data [position],
           ToastLength.Short).Show ();
        }        
    }
    

    Android.App.ListFragment.OnListItemClick 方法

    当列表中的一个项目被选中时,该方法将被调用。

    https://developer.xamarin.com/api/member/Android.App.ListFragment.OnListItemClick/p/Android.Widget.ListView/Android.Views.View/System.Int32/System.Int64/

    【讨论】:

    • 我使用片段。那不是活动
    • 我更新了答案,覆盖了ListFragment 子类中的OnListItemClick
    【解决方案3】:

    只需为 ListView.ItemClick 创建一个方法

    mListView.ItemClick += MListView_ItemClick;
    

    在方法中,您可以检索被点击项目的索引

    void MListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
        {
            Toast.MakeText(Application.Context, e.Position, ToastLength.Short).Show();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多