2016-07-14 2 views
0

У меня есть список с флажками. Я упорядочиваю свой список в классе EventHandler. Я хочу снять все флажки при нажатии кнопки «Назад». Я вызываю метод onBackPressed в другом действии. Поэтому я должен написать другую функцию, которая возвращает представление. Пожалуйста помоги. Я много искал, но я не мог найти точного решения.Снимите отметку со всех отмеченных флажков, когда onBackPressed в android

Внутри класса: я получаю аварию «Занимателей», чтобы снять флажки.

private ArrayList<ViewHolder> mViewHolders = new ArrayList<>(); 

ViewHolder:

private static class ViewHolder { 
    TextView topView; 
    TextView bottomView; 
    TextView dateView; 
    ImageView icon; 
    CheckBox checkBox; 
} 

GetView:

public View getView(int position, View convertView, ViewGroup parent) { 
    final ViewHolder mViewHolder; 
    int num_items = 0; 
    String temp = mFileMang.getCurrentDir(); 
    File file = new File(temp + "/" + mDataSource.get(position)); 
    String[] list = file.list(); 

    if(list != null) 
     num_items = list.length; 

    if(convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) mContext. 
      getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.tablerow, parent, false); 

     mViewHolder = new ViewHolder(); 
     mViewHolder.topView =(TextView)convertView.findViewById(R.id.top_view); 
     mViewHolder.bottomView = (TextView)convertView.findViewById(R.id.bottom_view); 
     mViewHolder.dateView =(TextView) convertView.findViewById(R.id.date_view); 
     mViewHolder.icon = (ImageView)convertView.findViewById(R.id.row_image); 
     mViewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.row_checkBox); 
     convertView.setTag(mViewHolder); 

     } else { 
      mViewHolder = (ViewHolder)convertView.getTag(); 

     } // I also make some text setting inside this. 
+1

Создать обратный вызов в действии, onBackPressed(), f ire callback, в вашем адаптере, реализовать обратный вызов и тело метода обратного вызова, снять флажки. – EagleEye

+0

Но также учитывайте случаи, когда вы хотите отключить один флажок, или только видимый, или только все из них. –

+0

Я хочу очистить их все – gunescelil

ответ

2

В соответствии мой комментарий рабочий процесс должен быть таким:
вашей деятельности:

public class MainActivity extends AppCompatActivity { 

private ListView mListView; 
private CustomAdapter mCustomAdapter; 
private List<YourCustomClass> mYourCustomItems; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    // don't forget to init everything you need 
    mYourCustomItems = new ArrayList<>(); 
    mListView = (ListView) findViewById(R.id.list_view); 
    mCustomAdapter = new CustomAdapter(mYourCustomItems); 
    mListView.setAdapter(mCustomAdapter); 
} 


@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch (keyCode){ 
     case KeyEvent.KEYCODE_BACK: 
      //all your needed stuff 
      for (YourCustomClass item : mYourCustomItems){ 
       item.setChecked(false); 
      } 
      mCustomAdapter.notifyDataSetChanged(); 
      return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

private class CustomAdapter extends BaseAdapter{ 

    private List<YourCustomClass> mYourCustomClasses; 

    public CustomAdapter(List<YourCustomClass> yourCustomClasses) { 
     mYourCustomClasses = yourCustomClasses; 
    } 

    @Override 
    public int getCount() { 
     return mYourCustomClasses.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return mYourCustomClasses.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     //all view holder related stuff and other initialization 
     CheckBox checkBox = itemView.findViewById(R.id.checkbox); 
     checkBox.setChecked(mYourCustomClasses.get(position).isChecked()); 
     return convertView; 
    } 
} 
+0

Спасибо Юрию больше, чем мне нужно. – gunescelil

1

я предлагаю вам для хранения значений флажок в прив и изменить значение флажка onbackpress

К Магазин Boolean Массив в Pref

public boolean storebaray(Boolean[] array, String arrayNam, Context mContext) { 

    SharedPreferences prefs = mContext.getSharedPreferences("prefname", 0); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putInt(arrayNam +"size", array.length); 

    for(int i=0;i<array.length;i++) 
     editor.putBoolean(arrayNam + "_" + i, array[i]); 

    return editor.commit(); 
} 

вы можете загрузить этот массив

public Boolean[] loadAry(String arrayNam, Context mContext) { 

    SharedPreferences prefs = mContext.getSharedPreferences("prefname", 0); 
    int size = prefs.getInt(arrayNam + "size", 0); 
    Boolean array[] = new Boolean[size]; 
    for(int i=0;i<size;i++) 
     array[i] = prefs.getBoolean(arrayNam + "_" + i, false); 

    return array; 
} 

затем onBackPressed проверить значения

Смежные вопросы