gpt4 book ai didi

java - 如何正确调用列表项子项的onClick方法?

转载 作者:行者123 更新时间:2023-12-02 13:25:34 25 4
gpt4 key购买 nike

我无法让列表项的子项的 onClick 方法正常工作。目前,当长按我的列表项之一时,会出现 AppCompatImageView。现在我想为该元素实现 onClick 方法。目前,单击该按钮/图像会引发异常并使我的应用程序崩溃:

java.lang.IllegalStateException: Could not find method deleteCurrentNote()(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatImageView with id 'listItemDeleteButton'

这是有道理的,因为 onClick 方法当前是在显示列表的 Activity 中实现的。把我的deleteCurrentNote()方法放在哪里才能正常工作?

我的一些代码(删节):

list_item_note.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout>

<TextView
android:id="@+id/listItemTitle" />

<TextView
android:id="@+id/listItemTags" />

<android.support.v7.widget.AppCompatImageView
android:id="@+id/listItemDeleteButton"
app:srcCompat="@drawable/delete"
android:onClick="deleteCurrentNote()"
android:visibility="gone" />

</RelativeLayout>

NoteListActivity.java:

ListView listViewNotes = (ListView) findViewById(R.id.listViewNotes);

lazyAdapter = new LazyAdapter(this, notes);
listViewNotes.setAdapter(lazyAdapter);

listViewNotes.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
currentNote = allNotes.get(position);

AppCompatImageView deleteButton = (AppCompatImageView) view.findViewById(R.id.listItemDeleteButton);
deleteButton.setVisibility(View.VISIBLE);
deleteButton.animate().alpha(1.0f).setDuration(5000);
return true;
}
});

...

public void deleteCurrentNote(View view) {
...
}

如果有帮助的话,我也可以从 LazyAdapter 上传代码。

另外一个问题,为什么我的deleteButton上的动画看起来很奇怪? /image/NxrRW.gif

它快速淡入,然后立即消失,最后慢慢淡入。我怎样才能让它慢慢地淡入一次?

感谢您的宝贵时间

最佳答案

如果您使用某些库,请创建您自己的新LazyAdapter子类。或者如果你使用自己的LazyAdapter,也可以这样修改代码:

    class newClass extends LazyAdapter implements AdapterView.OnItemLongClickListener, AdapterView.OnClickListener {

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
currentNote = allNotes.get(position);
AppCompatImageView deleteButton = (AppCompatImageView) view.findViewById(R.id.listItemDeleteButton);
deleteButton.setOnClickListener(this);
deleteButton.setVisibility(View.VISIBLE);
deleteButton.animate().alpha(1.0f).setDuration(5000);
return true;
}
}

@Override
public void onClick(View view) {
deleteCurrentNote();


}
}

在你的基本代码中:lazyAdapter = new newClass(this, 注释);listViewNotes.setOnItemLongClickListener(lazyAdapter );

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout>

<TextView
android:id="@+id/listItemTitle" />

<TextView
android:id="@+id/listItemTags" />

<android.support.v7.widget.AppCompatImageView
android:id="@+id/listItemDeleteButton"
app:srcCompat="@drawable/delete"
android:visibility="gone" />

</RelativeLayout>

关于java - 如何正确调用列表项子项的onClick方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43401129/

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