2010-08-10 10 views
2

Ce qui suit ne sera pas enregistrer le Toast lors d'un clic. En fait, il ne semble même pas détecter un clic. La classe parente que CustomListTitle étend est ListActivity, donc tout doit être défini, mais cela ne fonctionne pas. Pas d'erreurs, juste ne pas enregistrer un clic.onListItemClick() ne fonctionne pas pour ListView dans Android

package com.mtp; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.Toast; 

public class AvoidForeclosure extends CustomListTitle { 

// create variables 
private DbAdapter db; 
private SimpleCursorAdapter adapter; 
private ListView list; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // set to main layout 
     setContentView(R.layout.main); 

     // set title 
     this.title.setText("Avoid Foreclosure"); 

     // open new DB connection 
     db = new DbAdapter(this); 
     db.open(); 

     // Get all the clients and manage the cursor 
     Cursor c = db.fetchAllClients(); 
     startManagingCursor(c); 

     String[] from = new String[] { DbAdapter.KEY_NAME }; 

     int[] to = new int[] { R.id.text1 }; 

     // Create an array adapter and set it to display using our row 
     adapter = new SimpleCursorAdapter(this, R.layout.clientsrow, c, from, to); 

     // Set the adapter 
     setListAdapter(adapter); 

     // get the list and set some data 
     list = getListView(); 

     list.setTextFilterEnabled(true); 

     list.setClickable(true); 

} 

    @Override 
    protected void onListItemClick(ListView list, View v, int position, long id) { 
    // TODO Auto-generated method stub 

    // get the selection then attempt to make a Toast 
    String selection = list.getItemAtPosition(position).toString(); 
    Toast.makeText(this, selection, Toast.LENGTH_LONG).show(); 

     // Comment these out for now until I get a working Toast. 
     //Intent intent = new Intent(); 
    //intent.setClass(v.getContext(), CurrentMarketValue.class); 
    //intent.putExtra("clientId", clientData.getInt(0)); 
    //startActivity(intent); 

    super.onListItemClick(list, v, position, id); 
    } 


} 

Et voici ma mise en page principale:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    android:id="@+id/widget55" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:descendantFocusability="blocksDescendants" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Choose a current client:" 
    android:textStyle="bold" 
    android:layout_margin="3dip" 
    /> 


    <ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:descendantFocusability="blocksDescendants" 
    /> 

    <TextView android:id="@android:id/empty" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="There are no Clients yet." 
     /> 


</LinearLayout> 

Et voici ma mise en page de clientsrow que le ListView utilise pour remplir:

<?xml version="1.0" encoding="utf-8"?> 
<TextView android:id="@+id/text1" xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#FF0081D3" 
    android:padding="10dip" 
    android:textStyle="bold" 
    android:inputType="textCapWords" 
    android:capitalize="words" 
    android:focusable="false" 
    /> 

Toutes les idées? Je vous remercie! Je suis tellement coincé et sur une date limite.

Répondre

2

Essayez de vous débarrasser de android:descendantFocusability="blocksDescendants" (les deux occurrences) et de android:focusable="false", ce qui n'est pas souhaitable pour la structure que vous avez configurée. En outre, je ne sais pas pourquoi vous appelez list.setClickable(true);, car ce n'est pas nécessaire.

Questions connexes