0

J'ai créé une liste personnalisée avec un onItemClickListener et seule la moitié inférieure est cliquable. La liste utilise un ImageAdapter qui étend ArrayAdapter. Chaque ligne a deux ImageViews et une TextView qui utilisent des arguments suivants xmlListe personnalisée: moitié supérieure non cliquable

android:focusable="false" 
android:focusableInTouchMode="false" 
android:clickable="false" 

J'ai suivi this tutoriel et même essayé d'enlever le TextView et ImageView. La liste n'était pas cliquable du tout après les avoir supprimés.

Ceci est mon MainActivity

public class ClickTestActivity extends ListActivity 
{ 
String[] listItems={"alpha", "beta", "gamma", "delta", "epsilon"}; 
boolean[] listImages={true, false, true, false, true}; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    setListAdapter(new ImageAdapter(this, R.layout.main, R.id.text1, R.id.image1, listItems, listImages)); 
    getListView().setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   

      Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_SHORT).show(); 


     } 
    }); 
} 
} 

et mon ImageAdapter

public class ImageAdapter extends ArrayAdapter 
{ 
Activity context; 
String[] items; 
boolean[] arrows; 
int layoutId; 
int textId; 
int imageId; 

ImageAdapter(Activity context, int layoutId, int imageId, String[] items, boolean[] arrows) 
{ 
    super(context, layoutId, items); 

    this.context = context; 
    this.items = items; 
    this.arrows = arrows; 
    this.layoutId = layoutId; 
    this.textId = textId; 
    this.imageId = imageId; 
} 

public View getView(int pos, View convertView, ViewGroup parent) 
{ 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View row=inflater.inflate(layoutId, null); 
    TextView label=(TextView)row.findViewById(textId); 

    label.setText(items[pos]); 

    if (arrows[pos]) 
    { 
    ImageView icon=(ImageView)row.findViewById(imageId); 
     icon.setImageResource(R.drawable.ic_launcher); 
    }  

    return(row); 
} 
} 

et main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layercontainer" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#ffffff">  
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
    <TextView 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:padding="10dp" 
     android:textSize="16sp" 
     android:textColor="#000000"  
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="false"/> 
    <ImageView 
     android:id="@+id/image1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="false"/> 
</RelativeLayout> 

Répondre

0

La mise en page de listView être gonflé devrait être une mise en page différente. Essayez d'utiliser un autre xml pour le TextView et l'ImageView à l'intérieur du listView dire list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layercontainer" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#ffffff">  

<TextView 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:padding="10dp" 
    android:textSize="16sp" 
    android:textColor="#000000"  
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:clickable="false"/> 
<ImageView 
    android:id="@+id/image1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:clickable="false"/> 
</RelativeLayout> 

En main.xml ont seulement le listview. Changer

setListAdapter(new ImageAdapter(this, R.layout.main, R.id.text1, R.id.image1, listItems, listImages)); 

à

setListAdapter(new ImageAdapter(this, R.layout.list_item, R.id.text1, R.id.image1, listItems, listImages)); 
+0

ont parfaitement fonctionné. J'ai tellement essayé avant:/ Merci beaucoup – Seb

Questions connexes