我正在使用SimpleAdapter
绑定ListView
。现在,当用户点击项目时,我想从Click()
事件中禁用该时间。我找到了isEnabled()
的一些教程,但我不明白如何使用它?
请帮我解决这个问题。我正在使用自定义ListView
。
以下代码会停用ListView
。
SimpleAdapter adapter = new SimpleAdapter(this, arrlist,
R.layout.topicwisequestion, new String[] { "option" },
new int[] { R.id.option }) {
public boolean areAllItemsEnabled() {
return ignoreDisabled;
}
public boolean isEnabled(int position) {
if (areAllItemsEnabled()) {
return true;
}
return false;
}
};
lvTWOptions.setAdapter(adapter);
lvTWOptions.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Code...
}
});
答案 0 :(得分:2)
这样做。
定义一个布尔变量
boolean ignoreDisabled = false;
然后在areAllItemsEnabled:
中public boolean areAllItemsEnabled() {
return ignoreDisabled;
}
然后在isEnabled:
的开头public boolean isEnabled(int position) {
if (areAllItemsEnabled()) {
return true;
}
}
或者第二种方法是在适配器类中定义以下代码
private int mLastClicked;
public void setLastClicked(int lastClicked){
mLastClicked = lastClicked;
}
然后
public boolean areAllItemsEnabled() {
return false;
}
public boolean isEnabled(int position) {
// return false if position == position you want to disable
}
使用isEnabled方法添加上次点击事件的位置。
如需进一步参考,请查看link
希望这会对你有所帮助。
这样做。
ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c,
new String[] { "Name", "Score" }, to)
{
public boolean areAllItemsEnabled()
{
return false;
}
public boolean isEnabled(int position)
{
return false;
}
};
答案 1 :(得分:1)
您必须扩展简单适配器,维护已单击的索引列表,实现isEnabled(int)并检查传递的整数是否在列表中。然后,您可以在单击列表项后有选择地禁用它们。
添加一些代码:
public class MySimpleAdapter extends SimpleAdapter {
private List<Integer> mDisabledRows;
public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
mDisabledRows = new ArrayList<Integer>();
}
public void disableRow(int index) {
mDisableRows.clear();
mDisabledRows.add(index);
}
@Override
public boolean isEnabled(int index) {
return !mDisabledRows.contains(index);
}
}
使用onItemClick
方法拨打adapter.disableRow(position)
我读过你想要在点击后禁用一行。如果您只想禁用最后一次单击的行,则可以存储单击的最后一个索引。
答案 2 :(得分:1)
我使用了以下代码并解决了我的问题。它非常简单容易。无需使用任何额外代码。
我做的是我已经把条件检查位置,然后根据它,我禁用了Clicked Item。
我的代码:
int pos;
SimpleAdapter adapter = new SimpleAdapter(this, arrlist, R.layout.topicwisequestion, new String[] { "option" }, new int[] { R.id.option }) {
public boolean isEnabled(int position) {
if (position != 0) {
if (position == pos) {
return false;
} else {
return true;
}
} else {
return true;
}
}
};
lvTWOptions.setAdapter(adapter);
lvTWOptions.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
pos = position;
}
});