Android 碎片活动上的OnItemClickListener listView不工作

Android 碎片活动上的OnItemClickListener listView不工作,android,listview,onitemclicklistener,onitemclick,Android,Listview,Onitemclicklistener,Onitemclick,这个问题让我发疯 我有一个零碎的活动。在里面我有一个列表视图,其中我列出了一些客户。我需要在列表中单击以执行操作。但侦听器不会被触发。我不知道为什么。我尝试了我所看到的所有解决方案,但都不起作用 public class MainActivity extends FragmentActivity implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Cursor>, SimpleCursorAdapter.Vie

这个问题让我发疯

我有一个零碎的活动。在里面我有一个列表视图,其中我列出了一些客户。我需要在列表中单击以执行操作。但侦听器不会被触发。我不知道为什么。我尝试了我所看到的所有解决方案,但都不起作用

 public class MainActivity extends FragmentActivity implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Cursor>, SimpleCursorAdapter.ViewBinder, OnItemClickListener{

   @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);

    listActivos = getListView();

    cursorFiltroAutocomplete = Client.listActiveClients(this);

    cursorAdapter = new SimpleCursorAdapter(this, 
            R.layout.client_row,
            cursorFiltroAutocomplete,
            new String[]{Client.NAME,Client.ACCOUNT,Client.ICON,Client.PHOTO,Client.DATEINI,Client.DATEFIN},
            new int[]{R.id.nameClient,/*R.id.accountClient*/R.id.star,R.id.photo,R.id.dateIni,R.id.dateFim}
    );
   listActivos.setAdapter(cursorAdapter);
   cursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {   
        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            switch (view.getId()){
            case R.id.nameClient:
                TextView tv = (TextView)view;
                tv.setText(cursor.getString(columnIndex));
                return true;
            //case R.id.accountClient:
            //  return true;
            case R.id.star:
                star = cursor.getInt(cursor.getColumnIndex(Client.ICON));
                tbFavorite = (ToggleButton)view;
                if(star==1)
                    tbFavorite.setChecked(true);
                else
                    tbFavorite.setChecked(false);               
                return true;        
            case R.id.photo:
                byte[] bb = cursor.getBlob(cursor.getColumnIndex(Client.PHOTO));
                ImageView myImage = (ImageView)view;
                if (bb != null) {
                    myImage.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0, bb.length));
                } else {
                    Bitmap bm = null;
                    try  {
                    bm = getBitmapFromAsset("contact_userUpdate.png");
                    } catch (IOException ex){ex.printStackTrace();}
                    if ( bm != null)
                        myImage.setImageBitmap(bm);
                    else 
                        Log.w(MainActivity.class.getName(), "ICON IS NULL");        
                  }
                return true;
            case R.id.dateIni:
                dateIni = cursor.getString(cursor.getColumnIndex(Client.DATEINI));
                TextView dateI = (TextView)view.findViewById(R.id.dateIni);
                dateI.setText(dateIni);
                return true;
            case R.id.dateFim:
                dateFim = cursor.getString(cursor.getColumnIndex(Client.DATEFIN));
                TextView dateF = (TextView)view.findViewById(R.id.dateFim);
                dateF.setText(dateFim);
                return true;
            }
            return false;
        }
    });
     registerForContextMenu(listActivos); 
     listActivos.setClickable(true);
     listActivos.setOnItemClickListener(this);
     getSupportLoaderManager().initLoader(0, null, this);
   }  

   /*********************************Function to get ListView************************/
   private ListView getListView() {
    return (ListView)findViewById(android.R.id.list);
}  

   /*********************************Function onItemClick*****************************/

   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Log.w(MainActivity.class.getName(), "ITEM CLICADO");

}

 /******************************XML with the row of the List************************/
   <?xml version="1.0" encoding="utf-8"?>

 <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:background="@android:drawable/list_selector_background"
     android:gravity="fill_horizontal"
     android:longClickable="true"
     android:clickable="true"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:paddingBottom="8dip"
     android:paddingTop="5dip">

  <ImageView
      android:id="@+id/photo"
      android:layout_width="70dp"
      android:layout_height="70dp"
      android:layout_marginLeft="20dp"
      android:layout_marginRight="10dp"
      android:scaleType="fitXY"
      android:src="@drawable/contact_user"
      android:focusable="false"
      android:clickable="false" />

  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="fill_horizontal"
      android:layout_marginLeft="10dp"
      android:layout_marginRight="10dp"
      android:layout_weight="1"
      android:gravity="fill"
      android:orientation="vertical">

    <TextView
        android:id="@+id/nameClient"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:minLines="1"
        android:maxLines="1"
        android:focusable="false"
        android:clickable="false"/>
    <LinearLayout
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="fill_horizontal"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:gravity="fill" 
        android:orientation="horizontal">

        <TextView android:id="@+id/dateIni"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="@string/dateIni"
                  android:textColor="#59df8f"
                  android:textAppearance="?android:attr/textAppearanceMedium"
                  android:minLines="1"
                  android:maxLines="1"
                  android:focusable="false"
                  android:clickable="false" />

        <TextView android:id="@+id/dateFim"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="@string/dateFim"
                  android:textColor="#ff3100"
                  android:textAppearance="?android:attr/textAppearanceMedium"
                  android:minLines="1"
                  android:maxLines="1"
                  android:focusable="false"
                  android:clickable="false"/>
      </LinearLayout>           
  </LinearLayout>
        <ToggleButton
            android:id="@+id/star"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/list_star_selector"
            android:focusable="false"
            android:clickable="false"/>
     </TableRow>

   /******************************XML with the list View******************************/
     <?xml version="1.0" encoding="utf-8"?>

   <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:background="@drawable/background_tile"
     android:orientation="vertical" >

  <ListView 
      android:id="@+id/@android:id/list"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:clickable="true"
      />
   </LinearLayout>
公共类MainActivity扩展了FragmentActivity在QueryTextListener、LoaderManager.LoaderCallbacks、SimpleCursorAdapter.ViewBinder和OnItemClickListener上实现的碎片{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listActivos=getListView();
cursorFiltroAutocomplete=Client.listActiveClients(此);
cursorAdapter=新的SimpleCursorAdapter(此,
R.layout.client_行,
游标过滤器自动完成,
新字符串[]{Client.NAME,Client.ACCOUNT,Client.ICON,Client.PHOTO,Client.DATEINI,Client.DATEFIN},
新int[]{R.id.nameClient,/*R.id.accountClient*/R.id.star,R.id.photo,R.id.dateIni,R.id.dateFim}
);
listActivos.setAdapter(光标适配器);
cursorAdapter.setViewBinder(新的SimpleCursorAdapter.ViewBinder(){
@凌驾
公共布尔setViewValue(视图、光标、int-columnIndex){
开关(view.getId()){
案例R.id.nameClient:
TextView电视=(TextView)视图;
tv.setText(cursor.getString(columnIndex));
返回true;
//案例R.id.accountClient:
//返回true;
案例R.id.star:
star=cursor.getInt(cursor.getColumnIndex(Client.ICON));
tbFavorite=(切换按钮)视图;
如果(星==1)
tbFavorite.setChecked(true);
其他的
tbFavorite.setChecked(false);
返回true;
案例R.id.照片:
字节[]bb=cursor.getBlob(cursor.getColumnIndex(Client.PHOTO));
ImageView myImage=(ImageView)视图;
如果(bb!=null){
setImageBitmap(BitmapFactory.decodeByteArray(bb,0,bb.length));
}否则{
位图bm=null;
试一试{
bm=getBitmapFromAsset(“contact_userUpdate.png”);
}catch(IOException ex){ex.printStackTrace();}
如果(bm!=null)
设置图像位图(bm);
其他的
Log.w(MainActivity.class.getName(),“图标为空”);
}
返回true;
案例R.id.dateIni:
dateIni=cursor.getString(cursor.getColumnIndex(Client.dateIni));
TextView dateI=(TextView)view.findViewById(R.id.dateIni);
dateI.setText(dateIni);
返回true;
案例R.id.dateFim:
dateFim=cursor.getString(cursor.getColumnIndex(Client.DATEFIN));
TextView dateF=(TextView)view.findviewbyd(R.id.dateFim);
dateF.setText(dateFim);
返回true;
}
返回false;
}
});
registerForContextMenu(listActivos);
listActivos.setClickable(真);
listActivos.setOnItemClickListener(this);
getSupportLoaderManager().initLoader(0,null,this);
}  
/*********************************函数获取ListView************************/
私有ListView getListView(){
return(ListView)findviewbyd(android.R.id.list);
}  
/*********************************mclick函数*****************************/
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
Log.w(MainActivity.class.getName(),“ITEM CLICADO”);
}
/******************************带有列表行的XML************************/
/******************************具有列表视图的XML******************************/

有人有主意吗?我把列表中的项目放在“android:focusable=“false”上,但不起作用。我放了android:genderantfocusability=“beforestendents”,但结果是一样的……

删除
listActivos.setClickable(true);
android:genderantfocusability=“beforestendents”

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

从所有视图中选择。它们对于实现您想要的目标毫无用处。

在您的TableRow上设置focusable=false试试:

 <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:background="@android:drawable/list_selector_background"
         android:gravity="fill_horizontal"
         android:longClickable="true"
         android:clickable="true"
         android:minHeight="?android:attr/listPreferredItemHeight"
         android:paddingBottom="8dip"
         android:focusable="false"      // try this
         android:paddingTop="5dip">


Hello Flavio Faria。谢谢你的回复。我也尝试了这个。使用setClickable而不使用setClickable,使用android:DegenantFocusability=“BeforeDegenders”而不使用android:DegenantFocusability=“BeforeDegenders”“结果还是一样的。不,弗拉维奥。我尝试了,什么都没有。你的回答是疯狂的。我尝试了你的建议,但结果是一样的。不起作用:s