2015-08-28 60 views
0

这是我的代码;基本上,它是一个多选的列表视图,当单击它时将一个数字添加到分数(textview)。我的问题是,我希望在列表视图中选择项目时将该数字添加到分数中,并在取消选择项目时将其删除。使用我的代码,每次单击某个项目时,该数字都会添加到分数中。在列表视图中撤消操作 - onitemclicklistener

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 { 
      } 
     } 

    }); 

} 

} 

我以为也许更改为setOnItemSelected而不是ItemClicked,但我不确定。

希望我已经解释清楚自己,你可以帮助我。

谢谢您的高级。

回答

0

你可以通过你的代码来做到这一点。 在List list列表中维护一个标志;

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

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

如果已经点击的项目再次点击,您只需要检查标志。

如果(list.getposition(位置).isItemClickd){

// Decrease that value from total 
// list.getposition(position).isItemClickd = false; 

}其他{

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

}

+0

谢谢数目,但我不明白。我有非常有限的知识,我试图看看有关的信息,但我仍然没有得到它,你可以在代码中插入? – user3932605

0

我终于在一个简单的方法做它!

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]); 

我加入“其他”相同的动作比“如果”,但减去