2013-09-15 3 views
1

У меня есть ListView с флажками, которые мне нужно переключать при нажатии. По какой-то причине я начал работать над более старой ОС Android, но теперь она не работает в последней версии.Android CheckedTextView не проверяется правильно

Вот мой XML-файл:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="0.22" 
    android:fastScrollEnabled="true" /> 

И соответствующий исходный код:

package com.taptimer; 

public class HistoryActivity extends ListActivity { 

    final DatabaseHandler db = new DatabaseHandler(this); 
    private SimpleAdapter adapter; 
    private List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 
    private List<ScramblePair> scramblePairs; 
    private ListView listView; 
    private List<Integer> checkedPositions = new ArrayList<Integer>(); 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_history); 
     Intent intent = getIntent(); 
     scramblePairs = db.getAllScramblePairs("puzzle ASC, id DESC"); 

     for (ScramblePair sn : scramblePairs) { 
      if (sn.getPuzzle().equals(puzzleSelected)) { 
       Map<String, String> datum = new HashMap<String, String>(3); 
       String time = milliesToDuration(sn.getTime()); 
       datum.put("time", time); 
       datum.put("scramble", sn.getScramble()); 
       data.add(datum); 
      } 
     } 

     adapter = new SimpleAdapter(
       this, 
       data, 
       android.R.layout.simple_list_item_multiple_choice, 
       new String[] {"time", "scramble", "id", "modifier", "timestamp"}, 
       new int[] {android.R.id.text1, 
          android.R.id.text2}); 

     listView = getListView(); 
     listView.setLongClickable(true); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     listView.setAdapter(adapter); 

     listView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View view, int position, 
        long arg3) { 
       CheckedTextView check = (CheckedTextView) view; 
       if (!check.isChecked()) checkedPositions.add(position); 
       check.setChecked(!check.isChecked()); 
      } 
     }); 
    } 
} 

Что может быть причиной того, чтобы отличаться от сборки? Или есть более простой способ реализовать простой список с каждым элементом, имеющим флажок?

Спасибо!

+0

В чем проблема, с которой вы сталкиваетесь? – Prmths

ответ

0

Поскольку ListView будет управлять состоянием проверки элементов, коды check.setChecked могут быть удалены.

+0

Спасибо. Похоже, я переключил переключатель с моим кодом. Я удалил эту строку, и она работает по мере необходимости! – brabsmit