2013-05-14 13 views
6

In questo ListView non è selezionabile, voglio eseguire un'azione sul click dell'elemento ma non so perché questo non è cliccabile, ho anche controllato il debug il controller non è andato in itemclicklistener .L'elemento ListView non è selezionabile in Android

file di disegno:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<CheckBox 
    android:id="@+id/cbSolved" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="15dp" 
    android:layout_marginTop="20dp" 
    android:text="Show Solved" /> 

<CheckBox 
    android:id="@+id/cbMyCases" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/cbSolved" 
    android:layout_alignBottom="@+id/cbSolved" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="46dp" 
    android:text="My Cases" /> 

<EditText 
    android:id="@+id/etCaseSeacrh" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/cbSolved" 
    android:layout_marginLeft="28dp" 
    android:ems="10" 
    android:hint="Search" > 
</EditText> 

<ListView 
    android:id="@+id/liCases" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/btnNewCase" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/etCaseSeacrh" 
    android:layout_marginTop="23dp" 
    android:clickable="true" > 
</ListView> 

<Button 
    android:id="@+id/btnNewCase" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:text="New Case" /> 

</RelativeLayout> 

Questa è la mia classe java in questo sto lista accedendo ma non è cliccabile

public class ShowCases extends Activity{ 
    ListView listshowcase; 
EditText search; 
    ListViewAdapter adapter; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.screen4); 

    listshowcase = (ListView) findViewById(R.id.liCases); 
    adapter = new ListViewAdapter(this); 
     listshowcase.setAdapter(adapter); 
    listshowcase.setClickable(true); 
    listshowcase.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 
      String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
      String cost = ((TextView) view.findViewById(R.id.email)).getText().toString(); 
      String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString(); 
      String id = ((TextView) view.findViewById(R.id.id)).getText().toString(); 
      // Starting new intent 
      Intent in = new Intent(getApplicationContext(), CompanyDetail.class); 
      in.putExtra("name", name); 
      in.putExtra("email", cost); 
      in.putExtra("ff", description); 
      in.putExtra("fff", id); 
      startActivity(in); 
     } 
    }); 


    search=(EditText)findViewById(R.id.etCaseSeacrh); 

    search.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // Call back the Adapter with current character to Filter 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count,int after) { 
     } 

       @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
    } 

e questo è GetView di costume Listadapter classe

@Override 
    public View getView(final int paramInt, View paramView, 
     final ViewGroup paramViewGroup) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflator = activity.getLayoutInflater(); 
     if (paramView == null) { 
     view = new ViewHolder(); 
     paramView = inflator.inflate(R.layout.list_item, null); 

     view.name = (TextView) paramView.findViewById(R.id.name); 
     view.email = (TextView) paramView.findViewById(R.id.email); 
     view.mobile = (TextView) paramView.findViewById(R.id.mobile); 
     view.id = (TextView) paramView.findViewById(R.id.id); 
     paramView.setTag(view); 

     } else { 
     view = (ViewHolder) paramView.getTag(); 
     } 

    view.name.setText(TAG_NAME.get(paramInt)); 
    view.email.setText(TAG_EMAIL.get(paramInt)); 
    view.mobile.setText(TAG_PHONE_MOBILE.get(paramInt)); 
    view.id.setText(TAG_ID.get(paramInt)); 
    /*view.name.setFocusableInTouchMode(false); 
    view.name.setFocusable(false);*/ 
    /*view.setOnClickListener(myClickListener);*/ 
    view.name.setFocusable(false); 
    view.email.setFocusable(false); 
    view.mobile.setFocusable(false); 
    view.id.setFocusable(false); 

    return paramView; 
} 
+0

rimuovere tutto il setFocusable –

+0

utilizzare questo, non funziona – Android

+0

possibile duplicato di [elementi ListView non sono selezionabili. perché?] (http://stackoverflow.com/questions/8955270/listview-items-are-not-clickable-why) – rds

risposta

31

Ok, hai un pulsante lì dentro. Nel tuo list_item xml inserisci android:descendantFocusability="blocksDescendants" nel LinearLayout o RelativeLayout che hai.

+0

wow il suo funzionamento, ho capito cosa funzionalità di questo ? – Android

+0

sto accettando la tua risposta, per favore voglio conoscere la funzione di questo, per favore, dimmi se puoi – Android

+1

Questo link http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several -clickable-areas/ha molte informazioni utili. Non sarei in grado di spiegare oltre a ciò che è spiegato nel link. –

0

Sei in grado di visualizzare l'elenco? In caso affermativo, mostrare il file layout che contiene TextView per visualizzare l'elemento nell'elenco.

Provare a rimuovere isTextSelectable da quello TextView in tal caso.

Verificare se c'è qualche stupido errore, come ho fatto pochi mesi fa da qui:

onItemClick in ListView doesn't work

+0

usa questo, non funziona – Android

0

sufficiente rimuovere

listshowcase.setClickable(true); 

questa linea da ShowCases. E poi riprova.

Spero che questo ti possa aiutare. In caso contrario, per favore fatemelo sapere.

+0

usa questo, non funziona – Android

0

aggiungere un OnClickListener a ciascuna delle visualizzazioni restituite dall'adattatore.