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;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
hoffen, dass diese Arbeit für Sie...
onItemLongClick
undonItemClick
sollen innerhalb vonnew AdapterView.onItemLongClickListener()
undnew AdapterView.onItemClickListener()
Objekte bzw..Hinzufügen eines OnItemLongClickListener zu Ihrem
ListView
für den Umgang mit der Sichtbarkeit IhrerImageView
Hinzufügen eines OnItemClickListener zu Ihrem
ListView
für den Umgang mit der gewünschten Funktionalität gibt.Hinzufügen eines OnClickListener zu Ihrem
ImageView
und zu verarbeiten, die das löschen eines Elements gibt. Sie können machen, verwenden Sie eine benutzerdefinierteAdapter
ab und setzen die getView-Methode erklärt hierNun in deiner mainActivity, die Sie Hier erstellen listView-Instanzen.
Langer Klick auf einen Listeneintrag wird das Bild sichtbar und müssen hervorheben, dass Listitem(ändern Sie den hintergrund des Elements)
ich denke, Sie sind nicht angenommen zu haben, problem in diesem Abschnitt
onckick Sie auf das Bild, wird das Listenelement löschen.(das ist überschaubar in der adapter-Klasse)
Für diese müssen Sie löschen Sie das Element aus der arraylist, die Sie senden adapter Klasse wie diese