Android 无法在水平滚动视图中单击列表项
我注意到,通过添加Android 无法在水平滚动视图中单击列表项,android,listview,horizontalscrollview,Android,Listview,Horizontalscrollview,我注意到,通过添加水平滚动视图,我无法在列表视图上选择项目。这似乎是一个需要添加的非常基本/常见的功能(我希望能够向左滑动我的项目以提供删除选项),但是HorizontalScrollView似乎与您也希望触摸选择的项目不兼容。请注意,如果我将HorizontalScrollView更改为LinearLayout或其他方式,则项目将变为可选 我怀疑touch监听器可能无效,因为刷卡功能覆盖了任何其他类型的触摸,但我真的想不出为什么它不起作用。有人能帮助解决这个问题吗?我希望能够使用水平滚动视图和
水平滚动视图
,我无法在列表视图
上选择项目。这似乎是一个需要添加的非常基本/常见的功能(我希望能够向左滑动我的项目以提供删除选项),但是HorizontalScrollView
似乎与您也希望触摸选择的项目不兼容。请注意,如果我将HorizontalScrollView
更改为LinearLayout
或其他方式,则项目将变为可选
我怀疑touch监听器
可能无效,因为刷卡功能覆盖了任何其他类型的触摸,但我真的想不出为什么它不起作用。有人能帮助解决这个问题吗?我希望能够使用水平滚动视图
和单击兼容性
(除非有其他方法实现相同的功能)
对于任何有此问题的人,我都设法找到了解决方法。我的问题是,由于XML中的HorizontalScrollView
设置,我无法单击ListView
项,但是在我的例子中,我使用了一个适配器以及ListView
(这允许您将ListView
与实际的列表行视图链接)在这个适配器中,我只定义并链接了视图的容器,我想按下它并设置一个onClickListener
这将进入您的自定义适配器:
ConstraintLayout myLayout = convertView.findViewById(R.id.constraintLayout1);
ConstraintLayout anotherLayout = convertView.findViewById(R.id.constraintLayout2); //lets' say I'm using this to delete the item when clicked
myLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent exampleIntent = new Intent(viewParent.getContext(), SomeActivity.class);
}
});
anotherLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(view.getContext());
builder.setMessage("Are You Sure?").setNegativeButton("No", null);
builder.setPositiveButton("yes", new android.support.v7.app.AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Database database = new Database(viewParent.getContext());
database.deleteItem(item);
List<Item> items = database.getItems();
ListView list = (ListView) viewParent.findViewById(R.id.my_linear_list);
//List<Item> items = new Database(viewParent.getContext()).getItems();
TaskAdapter adapterNew = new ItemAdapter(viewParent.getContext(), tasks);
list.setAdapter(adapterNew);
}
});
builder.show();
}
});
ConstraintLayout myLayout=convertView.findViewById(R.id.constraintLayout1);
ConstraintLayout anotherLayout=convertView.findViewById(R.id.constraintLayout2)//假设我在单击时使用此选项删除项目
myLayout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent exampleIntent=新意图(viewParent.getContext(),SomeActivity.class);
}
});
anotherLayout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
android.support.v7.app.AlertDialog.Builder=新的android.support.v7.app.AlertDialog.Builder(view.getContext());
setMessage(“你确定吗?”).setNegativeButton(“否”,空);
builder.setPositiveButton(“是”,新的android.support.v7.app.AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
数据库=新数据库(viewParent.getContext());
数据库。删除项(项);
List items=database.getItems();
ListView列表=(ListView)viewParent.findViewById(R.id.my\u线性\u列表);
//列表项=新数据库(viewParent.getContext()).getItems();
TaskAdapter adapterNew=新的ItemAdapter(viewParent.getContext(),tasks);
列表.setAdapter(adapterNew);
}
});
builder.show();
}
});
尝试如何使用RecyclerView构建水平列表视图?如果我误解了,请原谅,我希望水平滚动到垂直的ListView行,而不是水平的ListView。您能分享一个屏幕截图示例吗?这不是回答您的问题,但我可以问一下2ConstraintLayout
s@Kiya我尝试了一些组合。经过一些尝试和错误,我可能会有一个解决方案(我还没有在网上看到),我将在今天晚些时候在这里发布。
ConstraintLayout myLayout = convertView.findViewById(R.id.constraintLayout1);
ConstraintLayout anotherLayout = convertView.findViewById(R.id.constraintLayout2); //lets' say I'm using this to delete the item when clicked
myLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent exampleIntent = new Intent(viewParent.getContext(), SomeActivity.class);
}
});
anotherLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(view.getContext());
builder.setMessage("Are You Sure?").setNegativeButton("No", null);
builder.setPositiveButton("yes", new android.support.v7.app.AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Database database = new Database(viewParent.getContext());
database.deleteItem(item);
List<Item> items = database.getItems();
ListView list = (ListView) viewParent.findViewById(R.id.my_linear_list);
//List<Item> items = new Database(viewParent.getContext()).getItems();
TaskAdapter adapterNew = new ItemAdapter(viewParent.getContext(), tasks);
list.setAdapter(adapterNew);
}
});
builder.show();
}
});