我已经看到了所有相关的问题,并尝试了他们的答案。我在一个片段中有一个ListView,它的onItemClick
方法在一个活动内部被调用,但在另一个活动中没有被调用。其他一切都是一样的。我试过了:
android:clickable
。android:focusable
和android:focusableInTouchMode
。listView.setItemsCanFocus
。android:descendantFocusability="blocksDescendants"
属性。不过,它还没有用。它是具有相同适配器的相同片段,它没有关于在哪个活动中的条件。但是,在一个活动中它完美地运行,而在另一个活动中,onItemClick
不会被调用。我在ICS。为什么会这样?
更新
以下是我的片段中的相关代码:
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:
我还发现单元格内部的视图是响应式的。它只是单元格视图本身没有输入。
更新4:
我最终将抽头处理程序逻辑移动到单元格布局本身,而不是依赖于列表视图的处理程序。我知道这不是一个好习惯,但我必须在截止日期前完成。此外,现在它的工作非常顺利。我没有关闭/回答问题,因为技术问题仍然存在,我还没有找到真正的解决方案。我刚刚使用了一种解决方法来满足我的项目截止日期。
答案 0 :(得分:1)
我不确定您的问题,但我没有看到要调试的完整代码。 我将提交一个通常应该在片段中工作的示例代码。
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
ListView list = (ListView) view.findViewById(R.id.listView);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int positi on, long id) {
Log.d(TAG, "onItemClick");
}
});
注意:
答案 1 :(得分:0)
您是否尝试过为片段设置回调?这就是Android推荐的方式。您可以查看 - https://developer.android.com/training/basics/fragments/communicating.html#Deliver