簡體   English   中英

Xamarin Android單擊ListView中的按鈕並獲取項目位置

[英]Xamarin Android Click Button in ListView And Get Item Position

我想在OnCreateView“片段”上單擊按鈕

第一類是HomeScreenAdapter:BaseAdapter

是一個簡單的Adapter重新運行視圖

HomeScreenAdapter

public class HomeScreenAdapter : BaseAdapter<Quotes>
{
    List<Quotes> items;
    Activity context;
    public HomeScreenAdapter(Activity context, List<Quotes> items)
        : base()
    {
        this.context = context;
        this.items = items;
    }
    public override long GetItemId(int position)
    {
        return position;
    }
    public override Quotes this[int position]
    {
        get { return items[position]; }
    }
    public override int Count
    {
        get { return items.Count; }
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var item = items[position];
        View view = convertView;
        if (view == null) // no view to re-use, create new
            view = context.LayoutInflater.Inflate(Resource.Layout.Quotes, null);
        view.FindViewById<TextView>(Resource.Id.Quotes).Text = item.s_Quotes;
        view.FindViewById<TextView>(Resource.Id.From).Text = item.s_From;
        view.FindViewById<TextView>(Resource.Id.Category).Text = item.Category;

        return view;
    }
}

分段

class CrimeFragments : Fragment
{
    ListView Lv;
    List<Quotes> tableItems = new List<Quotes>();
    static Quotes quotes;
    ClipboardManager Cbm;
    ClipData Cd;
    ImageView imageView;
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {

        View rootView = inflater.Inflate(Resource.Layout.crimelayout, container, false);
        Lv = rootView.FindViewById<ListView>(Resource.Id.crimeListView);
        Lv.VerticalScrollBarEnabled = false;
        Lv.Adapter = new HomeScreenAdapter(this.Activity, tableItems);
        Lv.ItemClick += Lv_ItemClick;
        return rootView;
    }

    private void Lv_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        var t = tableItems[e.Position];
        string cpy = t.s_Quotes + " - " + t.s_From;
        Cbm = (ClipboardManager)Context.GetSystemService(Context.ClipboardService);
        Cd = ClipData.NewPlainText("text", cpy);
        Cbm.PrimaryClip = Cd;
        Toast.MakeText(this.Activity, "Text Copied", ToastLength.Short).Show();
    }
}

我要使此按鈕單擊而不是Lv.ItemClick

AXML

我想讓Thies按鈕獨立於Listview

任何人都可以幫助我嗎?

嗨,開發人員,我發現了一個適合我的解決方案:

  • 如果您有Adapter類, 請將GetView Function更改為此:

      public override View GetView(int position, View convertView, ViewGroup parent) { var item = items[position]; View view = convertView; if (view == null) { // no view to re-use, create new view = context.LayoutInflater.Inflate(Resource.Layout.Quotes, null); } view.FindViewById<TextView>(Resource.Id.Quotes).Text = item.s_Quotes; view.FindViewById<TextView>(Resource.Id.From).Text = item.s_From; view.FindViewById<TextView>(Resource.Id.Category).Text = item.Category; Button btnCopy = view.FindViewById<Button>(Resource.Id.btnCopy); btnCopy.Click += delegate { Toast.MakeText(this.context, items[position].s_From, ToastLength.Short).Show(); }; return view; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM