gpt4 book ai didi

android - ListView 中的一半项目未调用 OnItemLongClickListener

转载 作者:行者123 更新时间:2023-11-30 03:51:11 28 4
gpt4 key购买 nike

我有一个带有自定义适配器的 ListView ,

public class ClueArrayAdapter extends ArrayAdapter<String> {

---
----

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
---
---
return rowView;
}

行布局


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/clue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

/>

<com.mydomain.MyView
android:id="@+id/myView" // MyView is custom view and overrides onTouchEvent
android:layout_width="wrap_content"
android:layout_height="wrap_content"

/>

</LinearLayout>

我有一个 onItemLongClickListener

listView.setOnItemLongClickListener(new OnItemLongClickListener() {

public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
---
view.setSelected(true);
}

当长按 TextView 但不响应长按 myView 时,将调用此监听器。

我是否需要在 rowlayout 中设置 myView 的一些 xml 属性,以便在长按 myView 时也选择一行?

触摸 myView

 @Override
public boolean onTouchEvent(MotionEvent ev) {

final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
final float x = ev.getX();
final float y = ev.getY();
markedCell = getCellAt(x,y);
break;
}

}
return true;
}

最佳答案

从您的 onTouchEvent 返回 false。返回 true 意味着您处理了该事件并且不应将其传递给下一个处理程序(在本例中为您的长按事件)。

关于android - ListView 中的一半项目未调用 OnItemLongClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123523/

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