简体   繁体   中英

Clickable Button in a custom listview

My problem is I can't make the button I added in my custom listview to be clickable.

Here is the XML file of my custom listview:

<?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>

In my main activity I tried the Btn.Click event but it only produces an error. And from what I've read in similar problems, their button was initialize in their Array Adapter but I'm using SimpleCursorAdapter because I'm fetching data from my sqlite database.

What should I do then? Please don't give me java codes because some them aren't applicable in xamarin studio since it's c#. Thanks.

You can't do it this way because you have a lot of same items in ListView with same ids
You must set OnClickListener to your button in your Adapter's getView() method like this
( this is java code for android studio, so it can differ from c# code, but gist is the same )

Button btn = (Button) convertView.findViewById(R.id.deleteMemo);
btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //here you go
        }
    });

Try something like this (If you don't have Fragments delete the view. below)

var _view = view.FindViewById<ListView>(Resource.Id.listView1);
if (_view.ChildCount > 0){
Button _button = (Button)_view.GetItemAtPosition(0).GetChildAt(0);
}

Because you have a lot of similar objects on a list this is the only way i think to access them, Remember that item position is relative to the current visible items on the screen and you cant access items that are not visible

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM