Android ListView Coutume Adaptateur ImageButton
Cela peut ne pas être la bonne approche, si il ya une meilleure façon moyens de me le dire.
J'ai créé une classe de Coutume Adaptateur & dans ma méthode getView j'gonfler le point de vue que je veux utiliser
public View getView(int position, View convertView, ViewGroup parent)
{
View v = mInflater.inflate(R.layout.wherelayout, null);
if (convertView != null)
{
v = convertView;
}
HashMap<String, Object> whereHash = (HashMap<String, Object>) this.getItem(position);
if (whereHash != null)
{
TextView whereId = (TextView) v.findViewById(R.id.tvWhere);
TextView whereDetails = (TextView) v.findViewById(R.id.tvWhereDetails);
ImageButton ibDelWhere = (ImageButton) v.findViewById(R.id.ibDelWhere);
whereId.setText((CharSequence) whereHash.get("where"));
whereDetails.setText((CharSequence) whereHash.get("details"));
if (ibDelWhere != null)
{
ibDelWhere.setId(position);
ibDelWhere.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//do stuff when clicked
}
}
);
}
}
return v;
}
La vue se compose de 2 TextView aligné à gauche (& un ImageButton aligné à droite, je veux être en mesure de supprimer l'élément de la liste lorsque le bouton est cliqué. la disposition est comme cela -
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="horizontal" android:clickable="true">
<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:textSize="25sp" android:id="@+id/tvWhere" android:textColor="#00FF00" android:text="TextView" android:gravity="top|left" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"></TextView>
<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/tvWhereDetails" android:textColor="#0000FF" android:text="TextView" android:textSize="18sp" android:layout_below="@+id/tvWhere" android:gravity="bottom|left" android:layout_alignParentLeft="true"></TextView>
<ImageButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/eraser" android:id="@+id/ibDelWhere" android:layout_alignParentRight="true" android:layout_alignParentTop="true"></ImageButton>
</RelativeLayout>
Le problème est que lorsque la ImageButton est dans la mise en page, je peux cliquer dessus & le onClick() déclenche comme prévu, mais je ne peut pas cliquer sur la liste réelle de l'élément lui-même, c'est à dire cliquer sur le TextView éléments le feu à la ListView.onItemClick qui lui a été assignée déjà. Si je supprime le ImageButton de la mise en page, puis la ListView.onItemClick événement se déclenche lorsque je clique sur l'élément. Est-il possible que je peux activer en cliquant sur à la fois l'élément de liste & le bouton dans la mise en page ?
Merci les gars & gals.
Vous devez vous connecter pour publier un commentaire.
Vous devez définir le imagebutton non
focusable
et nonfocusableInTouchMode
(cliquable est ok).Veuillez noter que, plutôt que d'autres points de vue, vous ne pouvez pas le faire en xml, car la
android:focusable
est écrasée dansImageButton
s'constructeur.Pour être plus précis, c'est l'une des rares différences entre
ImageView
etImageButton
. Voir pour vous-même, c'est le complète source deImageButton
.À résoudre, il suffit d'appeler
setFocusable(false)
à partir de java. Ou utiliser unImageView
🙂Espère que cela aide.
Vous pouvez rendre cliquable, mais ce n'est pas vraiment pris en charge et Romain Guy va hurler à vous. Aussi, vous ne serez pas en mesure de se concentrer/appuyez sur le bouton avec la boule de commande. Cela étant dit, vous pouvez ajouter les propriétés suivantes à la touche, ce qui devrait rendre les deux cliquable:
Juste assurez-vous que vous pouvez vivre avec les conséquences.
Essayer de mettre
android:cliquables="false" sur la Mise en page.
J'ai eu le même problème avec un LinearLayout l'intérieur d'un autre Linearlayout.
L'extérieur LinearLayout est cliquable=true, résultat:
Le Contrôle ListView.OnItemClickListener ne se déclenche pas.
Après la mise à cliquable=false il fonctionne.
Ce qui se passe lorsque vous cliquez sur le TextView tandis que le ImageButton est-il? Est-il enregistrer un clic sur le bouton? ou ne rien faire?
Comment beaucoup d'espace dans la ligne de la ImageButton prendre? Il pourrait être qu'il est assez grand que vous ne pouvez pas cliquer dans la ligne à l'extérieur de l'il.
J'ai eu ce même problème. Ma solution a été de définir la méthode onClick pour la vue à l'intérieur de l'adaptateur au lieu d'utiliser onItemClick.
Espère que ça aide! Selon le reste de votre programme, cela pourrait vous forcer à remettre plus de données à la carte (que j'ai eu à faire), mais il fonctionne.
ici est un exemple de la coutume adaptateur dans la vue liste.
et faire fichier java Sur Le BaseAdapter