Android 撤消Listview-Listener中的操作

Android 撤消Listview-Listener中的操作,android,listview,android-listview,Android,Listview,Android Listview,这是我的密码;基本上,它是一个具有多项选择的列表视图,在单击时为分数(textview)添加一个数字。我的问题是,我希望在listview中选择项目时将数字添加到分数中,而在取消选择项目时将其删除。使用“我的代码”,每次单击某个项目时,该数字都会添加到分数中 public class MainActivity extends Activity { ListView myList; TextView tv1; String[] listContent = { "Add 2 t

这是我的密码;基本上,它是一个具有多项选择的列表视图,在单击时为分数(textview)添加一个数字。我的问题是,我希望在listview中选择项目时将数字添加到分数中,而在取消选择项目时将其删除。使用“我的代码”,每次单击某个项目时,该数字都会添加到分数中

public class MainActivity extends Activity {

ListView myList;
TextView tv1;

String[] listContent = {

        "Add 2 to total",
        "Add 3 to total",
        "Add 1 to total",
        "Add 5 to total",


};

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myList = (ListView) findViewById(R.id.listView1);
    tv1 = (TextView) findViewById(R.id.textView);
    final int[] counter = {0};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, listContent);
    myList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    myList.setAdapter(adapter);


    myList.setOnItemClickListener(new OnItemClickListener() {

        private String[] listview_array2 = {"2", "3", "1", "5"};

        public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {

            if (myList.isItemChecked(position)) {
                String name = this.listview_array2[position];
                int counter2 = Integer.parseInt(name);
                counter[0] = counter[0] + counter2;
                tv1.setText("Total " + counter[0]);


            } else {
            }
        }

    });

}

}
公共类MainActivity扩展活动{
列表视图myList;
文本视图tv1;
字符串[]listContent={
“总计加2”,
“总计加3”,
“总计加1”,
“总计加5”,
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList=(ListView)findViewById(R.id.listView1);
tv1=(TextView)findViewById(R.id.TextView);
最终int[]计数器={0};
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u list\u item\u多选,listContent);
myList.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
myList.setAdapter(适配器);
myList.setOnItemClickListener(新的OnItemClickListener(){
私有字符串[]listview_array2={“2”、“3”、“1”、“5”};
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
如果(myList.isItemChecked(位置)){
字符串名称=this.listview_array2[位置];
int counter2=Integer.parseInt(名称);
计数器[0]=计数器[0]+计数器2;
tv1.setText(“总计”+计数器[0]);
}否则{
}
}
});
}
}
我曾想过,可能会更改为setOnItemSelected而不是ItemClicked,但我不确定

希望我能解释清楚,你能帮我

提前谢谢你

尝试使用布尔值进行选择/取消选择


希望这能起作用

您可以通过代码实现这一点。 在您的值列表中维护一个标志,如列表

值是包含数字和标志的模型

如果单击了某个项目,请将标志设置为true并进行计算

如果已单击的项目再次单击,则只需检查标志

if(list.getposition(position.isItemClickd){

}否则{

// list.getposition(position).isItemClickd = true;
// total = total+prevValue;

}

我终于以一种简单的方式成功了

public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {

            if (myList.isItemChecked(position)) {
                String name = this.listview_array2[position];
                int counter2 = Integer.parseInt(name);
                counter[0] = counter[0] + counter2;
                tv1.setText("Total " + counter[0]);
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
如果(myList.isItemChecked(位置)){
字符串名称=this.listview_array2[位置];
int counter2=Integer.parseInt(名称);
计数器[0]=计数器[0]+计数器2;
tv1.setText(“总计”+计数器[0]);

我在“else”中添加了与“if”相同的操作,但减去了数字

谢谢,但我不明白。我的知识非常有限,我试图查找有关信息,但我仍然不明白,你能在代码中插入吗??
public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {

            if (myList.isItemChecked(position)) {
                String name = this.listview_array2[position];
                int counter2 = Integer.parseInt(name);
                counter[0] = counter[0] + counter2;
                tv1.setText("Total " + counter[0]);