代码之家  ›  专栏  ›  技术社区  ›  Phill

列表视图中的可单击图像

  •  0
  • Phill  · 技术社区  · 6 年前

    如何在ListView中创建图像,以及单击什么时候执行某些操作?我可以使用图像按钮,但图像不会填充按钮。 图像是一个垃圾图标,单击时必须删除与该ListView单元格关联的数据。

    ListViewLayout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp">
    <TextView
        android:id="@+id/txtvNome"
        android:text="Nome"
        android:layout_weight="1.5"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:textColor="#000000"
        android:textSize="15dp"
        android:textStyle="bold"
        android:paddingLeft="5dp" />
    
    <ImageButton
        android:id="@+id/btnDeleteLv"
        android:src="@drawable/delete"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:layout_height="wrap_content"    
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="0dp"
        android:adjustViewBounds="true"
        android:padding="20dp"
        android:scaleType="fitCenter" />
    

    列表视图适配器:

    public class ListViewAdapter : BaseAdapter
    {
        private readonly Activity context;
        private readonly List<Jogador> jogadores;
        public ListViewAdapter(Activity _context, List<Jogador> _jogadores)
        {
            this.context = _context;
            this.jogadores = _jogadores;
        }
        public override int Count
        {
            get
            {
                return jogadores.Count;
            }
        }
        public override long GetItemId(int position)
        {
            return jogadores[position].Id;
        }
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var view = convertView ?? context.LayoutInflater.Inflate(Resource.Layout.ListViewLayout, parent, false);
            var lvtxtNome = view.FindViewById<TextView>(Resource.Id.txtvNome);
            lvtxtNome.Text = jogadores[position].Nome;
            return view;
        }
        public override Java.Lang.Object GetItem(int position)
        {
            return null;
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   FreakyAli    6 年前

    您需要做的是将适配器类中的Click事件设置为您希望可单击的图像。

    在你 ListViewAdapter 像这样查找图像按钮:

    var deleteButton = view.FindViewById<ImageButton>(Resource.Id.btnDeleteLv);
    

    然后将Click事件设置为如下所示:

    deletebutton.Click+= HandleTouchEvent;
    

    并添加如下方法:

    private void HandleTouchEvent(object sender, System.EventArgs e)
        {
         //On Click code 
        }