- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试(出于学习目的)我自己实现一个简单的 AdapterView,其中项目来自基本适配器(来自 sdk 示例的 ImageAdapter)。
实际代码是这样的:
public class MyAdapterView extends AdapterView<ImageAdapter> implements AdapterView.OnItemClickListener{
private ImageAdapter mAdapter;
public MyAdapterView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initThings();
}
private void initThings(){
setOnItemClickListener(this);
}
@Override
public ImageAdapter getAdapter() {
// TODO Auto-generated method stub
return mAdapter;
}
@Override
public void setAdapter(ImageAdapter adapter) {
// TODO Auto-generated method stub
mAdapter=adapter;
requestLayout();
}
View obtainView(int position) {
View child = mAdapter.getView(position, null, this);
return child;
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
for(int i=0;i<mAdapter.getCount();i++){
View child = obtainView(i);
child.layout(10, 70*i, 70, 70);
addViewInLayout(child, i, null, true);
}
this.invalidate();
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Log.d("MYEXAMPLES","Clicked an item!");
}
}
这不是编码杰作,它只是显示带有图片的伪 ListView 。我知道我可以使用 ListView、GridView、Spinner 等,但我是 android 的新手,我正在尝试找出其中的一些东西。
好吧,这里的问题是:为什么我的 onItemClick 没有触发?
将同一个 ImageAdapter 与 GridView 一起使用,一切正常,但是当我使用上面的类时,我什么也得不到。在 AdapterView.java 中有那些点击、长按等事件的代码...所以为什么我不能直接触发它们?也许我误解了有关 AdapterView 工作原理的基本知识?我应该改为扩展其他基类吗?为什么?
希望能在这里找到更有经验的指导,在此先感谢。
最佳答案
如果您查看 AdapterView
的来源,你会看到 OnItemClickListener
在一个名为 performItemClick
的方法中被调用:
public boolean performItemClick(View view, int position, long id) {
if (mOnItemClickListener != null) {
// ...
mOnItemClickListener.onItemClick(this, view, position, id);
return true;
}
return false;
}
但是,如果您搜索 AdapterView
使用此方法的来源,您会看到它没有在任何地方调用!
确实,如果您检查 Gallery
的来源例如,您会看到 performItemClick
在 onSingleTapUp
的处理中调用或 onKeyUp
事件。
如果你想使用它,你必须检测用户何时点击某处并调用 performItemClick
靠自己。
关于android - 扩展 AdapterView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2563897/
当我打算执行 thirdactivity.class 时,Logcat 会这样说,这是什么意思?该 Activity 已建成。但是当模拟时,程序停止了。 11-11 10:17:25.824: E/A
我的代码显示此错误...AdapterView 是原始类型。 AdapterView 泛型类型 AdapterView 的引用应该被参数化,我该怎么办? public void onItemClick
我正在实现 AdapterView产生一个AbsListView -like 类,我可以使用 CursorAdapter在布局中。我正在实现这个,因为我想使用方便的自动数据更新行为 CursorAda
在我的小部件中,当 ListView 中的一个项目被长按时,我希望启动该项目(然而,在我目前的编码中,正常的点击也可以做到这一点,但现在我正在让长按做一些事情这样我就可以设置它以供以后需要更改长按的功
我创建了扩展“AdapterView”的类 A,并创建了扩展“BaseAdapter”以提供数据的类 D。 问题是每个 AdapterView 项目都没有将其长度拉伸(stretch)到 Adapte
所以我为我正在使用的饼图 View 创建了一个自定义 AdapterView。我不确定我做错了什么,但当我尝试旋转饼图时,饼图非常不稳定。我怀疑正在进行太多绘图,因为 traceview 显示对 Ca
我的 ListView 有一个 OnItemClickListener,如下所示: OnItemClickListener myClickHandler = new OnItemClickListen
我正在尝试(出于学习目的)我自己实现一个简单的 AdapterView,其中项目来自基本适配器(来自 sdk 示例的 ImageAdapter)。 实际代码是这样的: public class
在我的应用程序中,我实现了一个抽屉导航,它显示支票簿的银行账户列表。我编写了一个处理此列表的 AccountAdapter 类,并在我的 NavigationDrawerFragment 类中使用以下
我的应用程序的 MainActivity 中有一个抽屉导航。在此 Activity 中,设置了 AdapterView。当我单击适配器的某一行时,我希望打开一个新 Activity ,但位于同一个抽屉
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我一直在关注许多关于如何优化像画廊这样的列表的教程,但是我无法让我的适配器重新循环 View 。这是我的代码: @Override public View getView(int position,
如果字符串显示在 listAdapter 的多个项目之一中,是否可以使用 android-espresso 进行验证? 尝试这样的事情: onData(anything()).inAdapterVie
这是我的问题,我有这样的类架构: Activity fragment RecyclerView(有一个适配器) 适配器: 有一个 ViewHolder 类: public static class N
我使用的是 Gallery View ,其中对应于每个项目的 View 非常重要,由文本和多个按钮组成。 当我单击以拖动画廊 View (不在其中一个按钮上的某处)时,按钮的可绘制状态变为已按下,并且
我有一个动态列表,我想在带有单选按钮的适配器 View 中显示该列表。在一组。 我用过: public class Type2Adapter extends BaseAdapter{ Cont
如标题:我想知道如何获取我的 AdapterView 中所有当前显示的项目的列表(数组)。 为什么?在我的 AdapterView 中显示的对象需要在用户关闭 AdapterView 后释放一个监听器
我尝试设置 AdapterView.OnItemClickListener 来工作,但它不断出现错误,我似乎找不到有效的答案。 mListView.setOnClickListener(new Ada
我创建了一个使用 LayoutInflater 的 Adapter arraylist,以便图像保持比例。我正在尝试对所选项目标题(即“牛肉”)进行简单的 toast 。一切都按预期工作,除了我从 t
我通过扩展 AdapterView 创建了一个自定义的 ListView,我想在这个 View 中处理关键事件。我已经覆盖了 onKeyDown,但从未看到它被调用。我什至尝试覆盖 dispatchK
我是一名优秀的程序员,十分优秀!