Je fais un adaptateur personnalisé afin que je puisse afficher une liste d'éléments avec des icônes qui ressemble au menu qui apparaît lorsque vous cliquez longuement sur l'écran d'accueil.Android ListView article de l'adaptateur personnalisé non sélectionnable
Pour une raison quelconque, les éléments de la liste ne sont pas cliquables. Le peut être navigué avec le D-pad, mais ils ne peuvent pas être cliqués en aucune façon. Je pensais que le problème était avec le AlertDialog que j'utilisais alors j'ai remplacé un adaptateur de travail que j'avais ailleurs, mais j'ai le même problème ici.
Mon adaptateur ressemble à ceci:
ArrayList<IconListItem> mItems;
LayoutInflater mInflater;
public IconListAdapter(Context context, ArrayList<IconListItem> items) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mItems = items;
}
public IconListAdapter(Context context) {
this(context, new ArrayList<IconListItem>());
}
public void add(IconListItem item) {
mItems.add(item);
notifyDataSetChanged();
return item;
}
public void remove(IconListItem item) {
mItems.remove(item);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public IconListItem getItem(int position) {
return mItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if(convertView == null){
view = mInflater.inflate(R.layout.two_line_icon_list_item, null);
} else {
view = convertView;
}
IconListItem item = mItems.get(position);
TextView lineOne = (TextView) view.findViewById(R.id.firstLine);
TextView lineTwo = (TextView) view.findViewById(R.id.secondLine);
ImageView iconImage = (ImageView) view.findViewById(R.id.icon);
lineOne.setVisibility(View.VISIBLE);
lineTwo.setVisibility(View.VISIBLE);
iconImage.setVisibility(View.VISIBLE);
lineOne.setText(item.getText());
if (item.getSubtext() == null)
lineTwo.setVisibility(View.GONE);
else
lineTwo.setText(item.getSubtext());
if (item.getIcon() == null)
iconImage.setVisibility(View.GONE);
else
iconImage.setImageDrawable(item.getIcon());
return view;
}
Et le XML, il est gonfler:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="6dip"
>
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:id="@+id/firstLine"
android:ellipsize="marquee"
android:inputType="text"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="1"
android:ellipsize="marquee"
android:id="@+id/secondLine"
android:inputType="text"
/>
</LinearLayout>
</LinearLayout>
EDIT:
Quand je dis qu'ils ne sont pas cliquables, je veux dire qu'ils articles font ne surligne pas en orange lorsque je les appuie, et onItemClick ne s'appelle jamais.
Dans mon code, j'ai cela, un adaptateur différent pour un autre but et il fonctionne parfaitement
this.foos= foos;
fa = new FooAdapter(this.foos);
fooList.setAdapter(fa);
// View the details for an item when it is selected
fooList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent i = new Intent(MyActivity.this, MyOtherActivity.class);
i.putExtra("foo", ((fooAdapter)arg0.getAdapter()).getItem(arg2));
i.putExtra("list_position", arg2);
MyActivity.this.startActivityForResult(i, 0);
}
});
Mais quand j'échange les 3 premières lignes pour
IconListAdapter ila = new IconListAdapter(this);
ila.add(0, "Test 1", android.R.drawable.ic_menu_mylocation);
ila.add(0, "Test 2", android.R.drawable.ic_menu_edit);
ila.add(0, "Test 3", android.R.drawable.ic_menu_search);
groupList.setAdapter(ila);
il cesse de fonctionner.
Que voulez-vous dire par « ne peut pas être cliqué »? Montrez-nous où vous définissez l'écouteur de clic, s'il vous plaît. – Cristian
@Cristian Castiblanco J'ai édité la question plus d'informations sur le problème. –