Spinner setselection 禁用我的按钮的 onclick 方法
Spinner setselection disables my buttons' onclick method
我一整天都在处理这个问题。
我有一个微调器和可扩展列表视图。我的子视图首先有两个按钮。一个是 "Accept" 另一个是 "Decline"。我的微调器有 4 个选择。第一个是"Waiting requests" 第二个是"Accepted requests" 第三个是"Declined requests" 第四个是"All requests"
我想在我的程序第一次启动时看到 "Waiting requests"。
当我接受或拒绝时,我希望我的微调器动态变化。
(编辑:我想更新我的数据集而不是改变我的微调器。为此我需要刷新我的微调器。我在用微调器过滤我的数据后调用了 adapter.notifydatasetchanged。我使用微调器根据记录过滤我的数据(列表视图元素) 类别。)
对于动态变化,我首先使用了 setSelection(position,true) 代码。但这行不通。所以我使用了 setSelection(0,true);设置选择(位置,真);
我使用两次的原因是因为微调器在已被同一位置选中时不会更新。所以首先我用这段代码将我的位置设置为 0。
"setSelection(0,true)" 在我用这段代码设置了我实际想要的位置之后。
"setSelection(position,true)"
通过这两个代码,我实现了我的微调器是动态的但是!!!属于我的列表视图子项的我的按钮不再处于活动状态。我无法点击我的按钮。
我使用线程 运行 那两个代码段,但线程也无法解决我的问题。我开始认为这是一个错误问题。所以我想问一下Whosebug。我在等什么主意?
这是我的微调器代码:
spinner.setAdapter(spinnerAdapter);
listview.setAdapter(适配器);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, final int position, long id) {
if (oldposition == position)
{
if(position!=0) {
spinner.setSelection(0, false);
spinner.setSelection(position, false);
}
else
{
spinner.setSelection(1, false);
spinner.setSelection(position, false);
}
}
oldposition = position;
parentsFiltered.clear();
if (parent.getItemAtPosition(position).equals("Tümü")) {
parentsFiltered.addAll(yedek);
parents.clear();
parents.addAll(parentsFiltered);
} else if (parent.getItemAtPosition(position).equals("Onaylananlar")) {
filter(1);
} else if (parent.getItemAtPosition(position).equals("Reddedilenler")) {
filter(2);
} else if (parent.getItemAtPosition(position).equals("Bekleyenler")) {
filter(0);
}
dateFilter();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
parentsFiltered.clear();
parentsFiltered.addAll(yedek);
parents.clear();
parents.addAll(parentsFiltered);
adapter.notifyDataSetChanged();
adapter.notifyDataSetInvalidated();
}
});
提前致谢..
是的,我解决了我的问题。我无法解决 setselection 问题,但我决定换一种方式,而不是那样。我没有使用 setselection 方法。我只是在接受和拒绝按钮的 onclick 方法中也添加了我的过滤方法。那解决了问题。
我一整天都在处理这个问题。
我有一个微调器和可扩展列表视图。我的子视图首先有两个按钮。一个是 "Accept" 另一个是 "Decline"。我的微调器有 4 个选择。第一个是"Waiting requests" 第二个是"Accepted requests" 第三个是"Declined requests" 第四个是"All requests"
我想在我的程序第一次启动时看到 "Waiting requests"。 当我接受或拒绝时,我希望我的微调器动态变化。 (编辑:我想更新我的数据集而不是改变我的微调器。为此我需要刷新我的微调器。我在用微调器过滤我的数据后调用了 adapter.notifydatasetchanged。我使用微调器根据记录过滤我的数据(列表视图元素) 类别。) 对于动态变化,我首先使用了 setSelection(position,true) 代码。但这行不通。所以我使用了 setSelection(0,true);设置选择(位置,真); 我使用两次的原因是因为微调器在已被同一位置选中时不会更新。所以首先我用这段代码将我的位置设置为 0。 "setSelection(0,true)" 在我用这段代码设置了我实际想要的位置之后。 "setSelection(position,true)"
通过这两个代码,我实现了我的微调器是动态的但是!!!属于我的列表视图子项的我的按钮不再处于活动状态。我无法点击我的按钮。
我使用线程 运行 那两个代码段,但线程也无法解决我的问题。我开始认为这是一个错误问题。所以我想问一下Whosebug。我在等什么主意?
这是我的微调器代码:
spinner.setAdapter(spinnerAdapter); listview.setAdapter(适配器);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, final int position, long id) {
if (oldposition == position)
{
if(position!=0) {
spinner.setSelection(0, false);
spinner.setSelection(position, false);
}
else
{
spinner.setSelection(1, false);
spinner.setSelection(position, false);
}
}
oldposition = position;
parentsFiltered.clear();
if (parent.getItemAtPosition(position).equals("Tümü")) {
parentsFiltered.addAll(yedek);
parents.clear();
parents.addAll(parentsFiltered);
} else if (parent.getItemAtPosition(position).equals("Onaylananlar")) {
filter(1);
} else if (parent.getItemAtPosition(position).equals("Reddedilenler")) {
filter(2);
} else if (parent.getItemAtPosition(position).equals("Bekleyenler")) {
filter(0);
}
dateFilter();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
parentsFiltered.clear();
parentsFiltered.addAll(yedek);
parents.clear();
parents.addAll(parentsFiltered);
adapter.notifyDataSetChanged();
adapter.notifyDataSetInvalidated();
}
});
提前致谢..
是的,我解决了我的问题。我无法解决 setselection 问题,但我决定换一种方式,而不是那样。我没有使用 setselection 方法。我只是在接受和拒绝按钮的 onclick 方法中也添加了我的过滤方法。那解决了问题。