自定义列表视图中的可点击按钮
本文关键字:按钮 列表 视图 自定义 | 更新日期: 2023-09-27 18:12:39
我的问题是我不能使我在自定义列表视图中添加的按钮可点击。
下面是我的自定义listview的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="335dp"
android:layout_height="100dp"
android:minHeight="80dp"
android:maxHeight="250dp"
android:background="#ffffff"
android:id="@+id/list"
android:baselineAligned="false"
android:longClickable="false"
android:descendantFocusability="blocksDescendants"
android:clickable="false">
<Button
android:background="@drawable/grbgCan"
android:layout_width="15dp"
android:layout_height="20dp"
android:id="@+id/deleteMemo"
android:layout_gravity="start"
android:layout_marginLeft="270dp"
android:layout_marginTop="5dp"
android:duplicateParentState="false"
android:clickable="true" />
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/id"
android:layout_marginLeft="290dp"
android:layout_marginTop="-20dp"
android:layout_marginRight="15dp"
android:clickable="true" />
<TextView
android:id="@+id/top"
android:text="Title"
android:textColor="#ff7e7777"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="255.5dp"
android:layout_height="19.9dp"
android:paddingLeft="10dp"
android:layout_marginTop="-20dp" />
<TextView
android:id="@+id/bottom"
android:textColor="#ff7e7777"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="63.3dp"
android:paddingLeft="50dp"
android:layout_gravity="left"
android:text="Note" />
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/date"
android:layout_marginLeft="250dp"
android:layout_marginRight="5dp" />
</LinearLayout>
在我的主要活动中,我尝试了Btn。单击事件,但它只产生一个错误。从我在类似的问题中所读到的,他们的按钮在他们的数组适配器中初始化,但我使用SimpleCursorAdapter,因为我从我的sqlite数据库获取数据。
那我该怎么办呢?请不要给我java代码,因为有些代码在xamarin studio中不适用,因为它是c#。谢谢。
你不能这样做因为ListView中有很多相同的项目具有相同的id
你必须在适配器的getView()方法中将OnClickListener设置为按钮,如下所示
(这是java代码 android studio,所以它可以不同于c#代码,但主旨是相同的)
Button btn = (Button) convertView.findViewById(R.id.deleteMemo);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//here you go
}
});
尝试这样做(如果没有Fragments,请删除视图)。下图)
var _view = view.FindViewById<ListView>(Resource.Id.listView1);
if (_view.ChildCount > 0){
Button _button = (Button)_view.GetItemAtPosition(0).GetChildAt(0);
}
因为列表中有很多相似的对象这是我认为访问它们的唯一方法,请记住,项目位置是相对于屏幕上当前可见的项目的,您不能访问不可见的项目