2015-11-24 2 views
1

Мне нужно поместить надстрочный текст после того, как элемент был проверен. Я нашел решения, которые используют setPaintFlags(descriptionView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);. Я не использую textview, но вместо этого использую simple_list_item_multiple_choice для своего списка, так как я могу это решить? Вот мой весь код:Зачеркнутый элемент в Listview

public class Surv_list extends Fragment { 

    final String[] OPSys = new String[]{"item1","item2","item3","item4" 
    }; 
    ListView myList; 
    Button getChoice, clearAll; 
    SharedPreferences sharedpreferences; 
    public static final String MyPREFERENCES = "MyUserChoice" ; 
    ArrayList<String> selectedItems = new ArrayList<String>(); 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.listlay, container, false); 

     myList = (ListView)rootView.findViewById(R.id.list); 
     ListView list = (ListView) rootView.findViewById(R.id.list); 

     clearAll = (Button)rootView.findViewById(R.id.clearall); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_multiple_choice, OPSys); 
     myList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     myList.setAdapter(adapter); 
     list.setAdapter(adapter); 
     sharedpreferences = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
     if(sharedpreferences.contains(MyPREFERENCES)){ 
      LoadSelections(); 
     } 
     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
            long arg3) { 

       SaveSelections(); 

      } 

     }); 


     clearAll.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
// TODO Auto-generated method stub 
       ClearSelections(); 
      } 
     }); 
return rootView; 
    } 

    private void SaveSelections() { 
// save the selections in the shared preference in private mode for the user 

     SharedPreferences.Editor prefEditor = sharedpreferences.edit(); 
     String savedItems = getSavedItems(); 
     prefEditor.putString(MyPREFERENCES.toString(), savedItems); 
     prefEditor.commit(); 
    } 

    private String getSavedItems() { 
     String savedItems = ""; 
     int count = this.myList.getAdapter().getCount(); 
     for (int i = 0; i < count; i++) { 
      if (this.myList.isItemChecked(i)) { 
       if (savedItems.length() > 0) { 
        savedItems += "," + this.myList.getItemAtPosition(i); 

       } else { 
        savedItems += this.myList.getItemAtPosition(i); 
       } 
      } 
     } 
     return savedItems; 
    } 

    private void LoadSelections() { 
// if the selections were previously saved load them 

     if (sharedpreferences.contains(MyPREFERENCES.toString())) { 

      String savedItems = sharedpreferences.getString(MyPREFERENCES.toString(), ""); 
      selectedItems.addAll(Arrays.asList(savedItems.split(","))); 

      int count = this.myList.getAdapter().getCount(); 

      for (int i = 0; i < count; i++) { 
       String currentItem = (String) myList.getAdapter() 
         .getItem(i); 
       if (selectedItems.contains(currentItem)) { 
        myList.setItemChecked(i, true); 

       } else { 
        myList.setItemChecked(i, false); 
       } 

      } 
     } 
    } 

    private void ClearSelections() { 
// user has clicked clear button so uncheck all the items 
     int count = this.myList.getAdapter().getCount(); 
     for (int i = 0; i < count; i++) { 
      this.myList.setItemChecked(i, false); 
     } 
// also clear the saved selections 
     SaveSelections(); 
    } 

} 

всякая помощь была бы очень признательна.

+1

вам необходимо использовать пользовательский адаптер. – droidev

ответ

0

Вы можете создать пользовательский адаптер для своего списка, а в методе getview для adpater взять дескриптор textview. На основе вашего условия вы можете комбинировать уже доступный код, чтобы вычеркнуть текстовое представление.

0

для создания ваших собственных атрибутов вида в представлении списка, вы должны сделать пользовательский адаптер, кроме использования адаптера по умолчанию. вы не можете сделать это, используя адаптер по умолчанию. here вы можете узнать, как сделать пользовательский адаптер. Кроме того, я предлагаю вам использовать RecyclerView вместо ListView