我已經看到所有相關的問題,並嘗試了他們的答案。我有一個ListView裏面的一個片段,它是onItemClick
方法在一個活動內被調用,但在另一個活動時不被調用。其他一切都是一樣的。我試過了:ListView onItemClick不叫
- 顯式更改
android:clickable
。 - 顯式更改
android:focusable
和android:focusableInTouchMode
。 - 打電話
listView.setItemsCanFocus
。 - 在片段和活動根上添加
android:descendantFocusability="blocksDescendants"
屬性。
不過,它不工作。它與具有相同適配器的片段相同,它不具有關於在哪個活動中的條件。但是,在一項活動中它完美地起作用,而在另一項活動中,不會調用onItemClick
。我在ICS上。爲什麼會發生?
UPDATE:
這裏是我的片段中的相關代碼:
dataSource = (ArrayList<Map<String, Object>>) task.getResult();
FeedAdapter adapter = new FeedAdapter(getActivity(), dataSource, getUser());
ListView list = (ListView) rootView.findViewById(R.id.listView);
list.setItemsCanFocus(true);
//just trying these
list.setOnItemClickListener(self);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
if (dataSource.size() == 0) {
noPostsLabel.setVisibility(View.VISIBLE);
}
而且在我的適配器:
public View getView(int position, View convertView, ViewGroup parent) {
View view;
final Map<String, Object> post = objects.get(position);
LayoutInflater inflater = LayoutInflater.from(getContext());
if (convertView == null || convertView.getId() == R.id.headerRoot) {
view = inflater.inflate(R.layout.list_item_post_layout, parent, false);
} else {
view = convertView;
}
view.setClickable(false); //just trying these two now, they weren't here originally
view.setFocusable(false);
//populate
view.setTag(post);
[...] //populate the cell. very long code, redacted.
return view;
}
更新2:
我還有當我的「工作」活動中也實現了某些單元格時,如果它們在單元格中有一個可見的HorizontalScrollView(我有文件附加功能並且只有存在文件時纔可見),也不能選擇這些單元格。否則,它在GONE
可見性狀態)。我不知道爲什麼會造成這樣的麻煩。
更新3:
我還發現,在細胞內部的意見響應。這只是單元格視圖本身,而不是輸入。
UPDATE 4:
我已經結束了自來水處理程序邏輯移動,而不是依靠列表視圖中的處理程序的單元佈局本身。我知道這不是一個好的做法,但我必須遵守最後期限。此外,它現在工作非常順利。由於技術問題仍然存在,我沒有關閉/回答問題,我還沒有找到真正的解決方案。我剛剛使用了一種解決方法來滿足我的項目截止日期。
某些代碼可能有助於解決問題。 –
@EugeneH從哪裏來? –
從你的兩個片段和與帖子相關的活動。接口回調(如果有),列表實現。 –