xamarin andriod popupwindow自定义列表视图itemclick事件不起作用

祖拜尔兹

list.ItemClick+=不工作。如何在弹出窗口自定义项上执行项目单击listview简单来说,listviewitemclick事件有效,但不会在弹出窗口中触发该事件。我需要获取listview商品价值。

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="500dp"
  android:gravity="center"
  android:descendantFocusability="blocksDescendants"  
      android:layout_height="wrap_content"
  android:background="@android:color/background_light"
  android:weightSum="100">
  <LinearLayout
    android:orientation="horizontal"
      android:layout_width="match_parent"
      android:layout_weight="10"
      android:layout_height="40dp">
  <TextView
      android:text="Vælg din afdeling"
      android:textSize="20sp"
      android:textColor="#FF222222"
      android:paddingLeft="30dp"
      android:focusable="false"
      android:focusableInTouchMode="false"
      android:layout_gravity="center"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:minWidth="25px"
      android:minHeight="25px"
      android:id="@+id/textView1" />

      </LinearLayout>
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_weight="10">
      </LinearLayout>

      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="100dp"
          android:layout_weight="50">
        <ListView
          android:minWidth="25px"
          android:minHeight="25px"
          android:focusable="false"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/listView1" />
      </LinearLayout>
  <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:layout_marginTop="35dp">
      <View
          android:layout_width="0dp"
          android:layout_height="0dp"
          android:layout_weight="1"/>

      <Button
          android:id="@+id/btnAddExpense"
          android:layout_width="wrap_content"
          android:layout_height="45dp"
          android:textColor="#61222222"
          android:background="@null"
          android:text="Annuller"
          android:layout_marginLeft="20dp"
          android:layout_gravity="right"
          android:layout_marginRight="15dp" />


      <Button
          android:id="@+id/btnok"
          android:layout_width="wrap_content"
          android:layout_height="45dp"
          android:textColor="#FFF62F5E"
          android:text="Gem"
          android:background="@null"
          android:layout_marginLeft="1dp" 
          android:layout_gravity="right"
          android:layout_marginRight="15dp" />

  </LinearLayout>
</LinearLayout>

在此功能中,我将项目单击事件设置为开,listview但它不起作用。我该如何表演itemclick

private void DepartmentPicker_Click(object sender, EventArgs e)
{
    ButtonNext.Visibility = ViewStates.Invisible;
    GetListView.Adapter = new DepartmentListAdapter(this, departments);

    bool focusable = true;
    int width = 350;// LinearLayout.LayoutParams.WrapContent;
    int height = 450;//LinearLayout.LayoutParams.WrapContent;
    _view.FindViewById<Button>(Resource.Id.btnok).SetOnClickListener(this);
    var list= _view.FindViewById<ListView>(Resource.Id.listView1);

    popupWindow = new PopupWindow(_view, width, height, focusable);
    popupWindow.ContentView = _view;
    popupWindow.ShowAtLocation(_view, GravityFlags.CenterVertical, 0, 0);
    popupWindow.Focusable = true;
    popupWindow.Touchable = true;
    //listView.ChoiceMode = ChoiceMode.Single;
}
路Lu-MSFT

我写了一个演示,它正在运行GIF。 在此处输入图片说明

有我的代码 MainActivity.cs

   public class MainActivity : AppCompatActivity
{

    List<News> data;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
       SetContentView(Resource.Layout.activity_main);
     
        Button button1 = FindViewById<Button>(Resource.Id.button1);
        button1.Click += (o, e) =>
        {
            var popup = OnClick();
            popup.ShowAsDropDown((View)o, 0, 0);
        };

         data = new List<News>() {
            new News ("aaaaaaaa",1200),
            new News ("bbbbbbbbb",560),
            new News ("ccccccccc",158200),
            new News ("ddddddddd",900),
           
        };
     //   adapter = new NewsAdapter(data, this);
      
    }

    private PopupWindow OnClick()
    {
        
        PopupWindow _popupWindow = new PopupWindow(this);

       LayoutInflater inflater= (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService);
        View popup=inflater.Inflate(Resource.Layout.window_popup_content,null);
        ListView listView1 = popup.FindViewById<ListView>(Resource.Id.listView1);
        NewsAdapter adapter = new NewsAdapter(data, this);
        listView1.Adapter = adapter;

        

        listView1.ItemClick += (sender, args) =>
        {
           
           
             Toast.MakeText(this, data[args.Position].Title + "", ToastLength.Short).Show();
            _popupWindow.Dismiss();
        };

        _popupWindow.Width = ViewGroup.LayoutParams.WrapContent;
        _popupWindow.Height = ViewGroup.LayoutParams.WrapContent;
        _popupWindow.ContentView = popup;
        return _popupWindow;
    }
}

有的适配器listview

    public class NewsAdapter : BaseAdapter
{
    private List<News> data;
    private Context context;
    public override int Count
    {
        get
        {
            return data.Count;
        }
    }

    public NewsAdapter(List<News> data, Context context)
    {
        this.data = data;
        this.context = context;
    }


    public override Java.Lang.Object GetItem(int position)
    {
        return null;
    }

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

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        convertView = LayoutInflater.From(context).Inflate(Resource.Layout.lv_test, parent, false);
        TextView title = convertView.FindViewById<TextView>(Resource.Id.tv_title);
        TextView pv = convertView.FindViewById<TextView>(Resource.Id.tv_pv);
        pv.Text = data[position].Pv.ToString();
        title.Text = data[position].Title;
        return convertView;

    }

ListviewItem

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
>
<LinearLayout
    android:id="@+id/layout_content"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:orientation="horizontal"
    android:gravity="center_vertical">
    <TextView
        android:id="@+id/tv_title"
        android:layout_height="20dp"
        android:layout_width="0dp"
        android:layout_weight="5"
        android:textColor="#000000"
        android:text="aaaaaaaaa"
        android:textSize="16dp" />
    <TextView
        android:id="@+id/tv_pv"
        android:layout_height="10dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:textColor="#808080"
        android:textSize="10dp"
        android:text="19665"
        
        android:gravity="right|center_vertical" />
</LinearLayout>
<View
    android:layout_height="1dp"
    android:layout_width="match_parent"
    android:background="#dedede" />
</LinearLayout> 

有我的演示。你可以参考一下。https://github.com/851265601/ListviewPopUpWindowDemo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向 Xamarin 的 PDFTron.Android 中不起作用的页面添加自定义视图

尾部截断在自定义Xamarin.iOS表格视图单元上不起作用

Xamarin 自定义控件绑定不起作用

Xamarin-自定义开关不起作用

Xamarin Forms中的自定义控件不起作用

Xamarin 自定义控制命令不起作用

如何在Xamarin.Andriod中制作Carouselview

Xamarin.Andriod:如何接收消息并显示通知

自定义 ListView 绑定在 Xamarin.Forms 中不起作用

Xamarin IOS 自定义 URL 方案在 iOS 14 中不起作用

自定义Usercontrol和ViewModel之间的绑定在Xamarin中不起作用?

Xamarin自定义多项选择列表视图

有关针对xamarin andriod应用程序的免费自然语言处理API的建议

在Andriod中的活动之间传递数据(对象)列表

从andriod中的数组列表中删除重复项

Andriod for Java-Client-5.0.3中的滑动功能不起作用

为什么它在andriod studio的呼叫意图中不起作用符号#

Xamarin Forms - 调用事件“ItemSelected”时使自定义单元格绑定到原始列表视图项源

Xamarin自定义视图按钮绑定

Xamarin iOS自定义视图

具有自定义控件的Xamarin.Android通知在API26中不起作用

搜索在自定义列表视图中不起作用

onitemclicklistener 在自定义列表视图中不起作用

Xamarin getPlacePhotos 不起作用

Xamarin RelayCommand不起作用

Xamarin.Forms:自定义列表视图单元的数据绑定

Xamarin自定义键盘

Xamarin Android:底部导航视图不起作用

Xamarin页面c#中的自定义事件