Mit OnItemLongClick Zuhörer mit einem ListView

Ich habe eine ListView enthält Einträge gegeben durch die layout-Datei entry.xml beginnen möchte ich mit der ImageView Sichtbarkeit eingestellt View.GONE und onItemLongClick ändern, dass View.VISIBLE. Die ListView Eintrag, lange geklickt bleiben würde, hervorgehoben.

Dann möchte ich hinzufügen, eine onClickListener zu den ImageView (während seine sichtbar), so dass der angeklickte ListView Eintrag kann gelöscht werden, durch Tippen auf das Bild.

Braucht es aber auch eine zweite OnClickListener auf die ListView - Eintrag so, dass wenn es schon lange geklickt und markiert, dies kann rückgängig gemacht werden durch (kurz -) Klick auf den Eintrag. Dies würde wieder die ImageView zurück View.GONE.

Wie kann ich das erreichen?


listview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</LinearLayout>

entry.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dp" >

    <ImageView
        android:id="@+id/entry_deleteicon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:adjustViewBounds="true"
        android:baselineAlignBottom="false"
        android:maxHeight="40dp"
        android:maxWidth="45dp"
        android:src="@drawable/delete"
        android:visibility="gone" />

    <TextView
        android:id="@+id/entry_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="text" />
</RelativeLayout>

Meine Benutzerdefinierte Adapter

private class SaveAdapter extends ArrayAdapter<String> {
        private int resourceId;
        private SaveHolder[] holder;

        public SaveAdapter(Context context, int resource) {
            super(context, resource);
            this.resourceId=resource;
            this.holder = new SaveHolder[5];
        }

        @Override
        public int getCount() {
            return 5;
        }

        @Override
        public View getView(final int position, View row, ViewGroup parent) {
            holder[position] = null;
            if(row==null){
                LayoutInflater inflater = getActivity().getLayoutInflater();
                row = inflater.inflate(resourceId, parent, false);

                holder[position] = new SaveHolder();
                holder[position].textName = (TextView) row.findViewById(R.id.entry_name);
                holder[position].iconDelete = (ImageView) row.findViewById(R.id.entry_deleteicon);              
                row.setTag(holder[position]);
            }else{
                holder[position] = (SaveHolder) row.getTag();
            }
            holder[position].textName.setText("name");
            return row;
        }
    }

    static class SaveHolder{
        TextView textName;
        ImageView iconDelete;
    }
InformationsquelleAutor Edd | 2013-11-08
Schreibe einen Kommentar