单击 3 次后删除 ListView 项目
Remove ListView items after 3 clicks
如何从 Android 上的 ListView 中删除 ListView 项?
但是,我想在删除之前将每个项目的点击次数设置为 3。
因此,如果第一个位置的项目被单击一次,第二个项目被单击两次,则在第一个项目点击达到 3 之前不要删除任何项目。然后仅删除该项目,对于 ListView 中的其他项目,每个项目都必须被点击 3次。
listi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
final PopupMenu pop = new PopupMenu(Danger.this, listi);
pop.getMenuInflater().inflate(R.menu.menu_location, pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.Remove:
items.remove(position);
}//swithc
return false;
使用静态变量并用null保存,将静态变量包含在ClickListener中,一旦变量达到3,就可以从列表视图中删除项目
制作一个bean(Model) class 用于记录点击项根据
他们的相应位置和每次点击项目时首先检查
如果它返回 2 然后删除该项目,则单击该项目多少次
否则没有。
创建一个整数 ArrayList 并使用与列表视图完全相同的元素计数对其进行初始化,并设置列表所有元素的值 = 0
ArrayList<integers> counterList = new Arraylist();
for(int i = 0; i < listi.getAdapter.getChildrenCount(); i++){ // get total elements in adapter
counterList.add(0); // set each element of array list to 0
}
然后这里:
listi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
final PopupMenu pop = new PopupMenu(Danger.this, listi);
pop.getMenuInflater().inflate(R.menu.menu_location, pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.Remove:
if(counterList.get(position) >= 2){
items.remove(position); // remove current position item from arraylist adapter and notify data set changed
counterList.remove(position); // remove the current position element from counter list too
} else {
counterList.set(position, counterList.get(position) + 1); // if 3 clicks have not happened then increase the counter.
}
}//swithc
return false;
我建议添加 2 个字段:int timesClicked
和 int lastItemId
,然后在您的 onMenuItemClick 方法中,检查是否需要删除 Item:
int timesClicked = 0;
int lastItemId;
...
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId() == lastItemId) {
if(timesClicked == 3) {
timesCliked == 0;
items.remove(item);
} else timesClicked++;
} else {
lastItemId = item.getItemId();
timesClicked = 0;
}
}
这应该有效。
如何从 Android 上的 ListView 中删除 ListView 项?
但是,我想在删除之前将每个项目的点击次数设置为 3。
因此,如果第一个位置的项目被单击一次,第二个项目被单击两次,则在第一个项目点击达到 3 之前不要删除任何项目。然后仅删除该项目,对于 ListView 中的其他项目,每个项目都必须被点击 3次。
listi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
final PopupMenu pop = new PopupMenu(Danger.this, listi);
pop.getMenuInflater().inflate(R.menu.menu_location, pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.Remove:
items.remove(position);
}//swithc
return false;
使用静态变量并用null保存,将静态变量包含在ClickListener中,一旦变量达到3,就可以从列表视图中删除项目
制作一个bean(Model) class 用于记录点击项根据 他们的相应位置和每次点击项目时首先检查 如果它返回 2 然后删除该项目,则单击该项目多少次 否则没有。
创建一个整数 ArrayList 并使用与列表视图完全相同的元素计数对其进行初始化,并设置列表所有元素的值 = 0
ArrayList<integers> counterList = new Arraylist();
for(int i = 0; i < listi.getAdapter.getChildrenCount(); i++){ // get total elements in adapter
counterList.add(0); // set each element of array list to 0
}
然后这里:
listi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
final PopupMenu pop = new PopupMenu(Danger.this, listi);
pop.getMenuInflater().inflate(R.menu.menu_location, pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.Remove:
if(counterList.get(position) >= 2){
items.remove(position); // remove current position item from arraylist adapter and notify data set changed
counterList.remove(position); // remove the current position element from counter list too
} else {
counterList.set(position, counterList.get(position) + 1); // if 3 clicks have not happened then increase the counter.
}
}//swithc
return false;
我建议添加 2 个字段:int timesClicked
和 int lastItemId
,然后在您的 onMenuItemClick 方法中,检查是否需要删除 Item:
int timesClicked = 0;
int lastItemId;
...
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId() == lastItemId) {
if(timesClicked == 3) {
timesCliked == 0;
items.remove(item);
} else timesClicked++;
} else {
lastItemId = item.getItemId();
timesClicked = 0;
}
}
这应该有效。