2010-08-10 57 views
2

以下内容在单击时不会注册Toast。事实上,它似乎甚至没有检测到点击。 CustomListTitle扩展的父类是ListActivity,所以应该设置所有东西,但它不起作用。没有错误,只是没有注册点击。onListItemClick()不适用于Android中的ListView

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


} 

这是我的主要布局:

<?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> 

,这里是我的clientsrow布局ListView控件用于填充:

<?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" 
    /> 

任何想法?谢谢!我很困难,并在最后期限。

回答

2

试着摆脱android:descendantFocusability="blocksDescendants"(两次出现)和android:focusable="false",这两种都不适合您设置的结构。另外,我不知道你为什么叫list.setClickable(true);,因为这是不需要的。

相关问题