2015-08-28 90 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]); 

我加入「其他」相同的動作比「如果」,但減去