gpt4 book ai didi

android - 扩展 AdapterView

转载 作者:可可西里 更新时间:2023-11-01 19:07:49 27 4
gpt4 key购买 nike

我正在尝试(出于学习目的)我自己实现一个简单的 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 的来源例如,您会看到 performItemClickonSingleTapUp 的处理中调用或 onKeyUp事件。

如果你想使用它,你必须检测用户何时点击某处并调用 performItemClick靠自己。

关于android - 扩展 AdapterView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2563897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com