0

Ich habe eine benutzerdefinierte Liste mit einem OnItemClickListener und nur die untere Hälfte ist anklickbar. Die Liste verwendet einen ImageAdapter, der ArrayAdapter erweitert. Jede Reihe hat zwei ImageViews und einen Textview dieBenutzerdefinierte Liste: obere Hälfte nicht anklickbar

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

I gefolgt this tutorial folgende XML-Argumente verwenden und sogar versucht, die Textview und Image zu entfernen. Die Liste konnte nach dem Entfernen nicht mehr angeklickt werden.

Das ist mein 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(); 


     } 
    }); 
} 
} 

und meine 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); 
} 
} 

und die 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> 

Antwort

0

Listenansicht Layout aufgeblasen werden, sollte ein anderes Layout sein. Versuchen Sie eine andere XML für die Textview verwenden und das Image innerhalb der Listenansicht sagt 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> 

In main.xml haben nur die Listenansicht. Ändern

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

zu

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

perfekt gearbeitet. Versucht so viel vorher:/ Vielen Dank – Seb