首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 自定義 ListView 項目點擊無響應:檢查項目佈局中是否攔截觸摸事件

     編輯:程式設計綜合問答

ListView.setOnItemClickListener 不觸發,常見原因:項目佈局(row3.xml)中的控件設置了 android:focusable="true"、clickable="true" 或自定義 OnClickListener,攔截了觸摸事件導致 ListView 無法檢測項目點擊。

排查清單

  1. 項目根佈局/關鍵控件:檢查是否有 android:focusable="true"、android:focusableInTouchMode="true"、android:clickable="true",去掉或設置為 false。
    <LinearLayout ... android:focusable="false" android:clickable="false"> ... </LinearLayout>
    
  2. Adapter 中:未對 convertView 或子控件設置 setOnClickListener(示例代碼中無,但需確認)。
  3. ListView 屬性:確保 android:focusable="false"、android:focusableInTouchMode="false"(默認即可)。
  4. 項目類型:若有多種項目類型(getViewTypeCount > 1),確保所有類型都不攔截觸摸。

調試技巧

listView.setOnItemClickListener((parent, view, position, id) -> {
    Log.d("ListView", "Item clicked: " + position);
    Person person = (Person) parent.getItemAtPosition(position);
    Log.d("ListView", "Name: " + person.name); // 直接獲取數據對象
});

數據獲取正確方式

getItemAtPosition(position) 返回的是 Adapter 對應位置的數據對象(示例中 Person),直接強轉取字段,勿用 toString()。

清理項目佈局焦點/點擊屬性,ListView 項目點擊即可恢復正常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved