Autore Topic: Query e select mirata  (Letto 601 volte)

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Query e select mirata
« il: 06 Febbraio 2014, 11:00:55 CET »
0
Ciao, ho creato un db con le colonne anno-mese-giorno-turno-ore , dove i dati mediante text box vengo aggiunti non ordinati, usando la classe di ricerca qui sotto, riesco ad estrarre i dati cercati ed ordinati secondo l'id di inserimento, sto cercando di capire come modificare la classe per cercare un dato specifico, ossia, se ad esempio volessi visualizzare solo i dati di "Gennaio 2014" o "Marzo 2015" in una listview senza dover digitare i criteri di ricerca, posso modificare la classe qui sotto o devo riscriverne un'altra?

Codice (Java): [Seleziona]
public class Ricerca extends Activity implements TextWatcher {
        EditText _searchbox;
        private ProgressBar showprogress;
        searchtask dotask;
        private ArrayList<Turno> _turniList;
        ListView _listview;
        DatabaseHelper db;
        public AutoCompleteTextView myAutoComplete;
        private ArrayList<Turno> _turniList_Temp;
        String query = "";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                 
                super.onCreate(savedInstanceState);
                setContentView(R.layout.ricerca);
                _searchbox = (EditText) findViewById(R.id.txtsearchturno);
                showprogress = (ProgressBar) findViewById(R.id.showprogress);
                _listview = (ListView) findViewById(R.id.searchlistview);
                _searchbox.addTextChangedListener(textwatcher);

        }

        Runnable runn = new Runnable() {

                @Override
                public void run() {
                        // Auto-generated method stub
                        handlersearch.sendEmptyMessage(0);
                }
        };
        TextWatcher textwatcher = new TextWatcher() {

                public void onTextChanged(CharSequence s, int start, int before,
                                int count) {
                        Log.i("---onTextChanged ----", "---------onTextChanged ----");

                        if (_searchbox.getText().toString().length() > 1) {
                                query = _searchbox.getText().toString().replace(" ", "%");

                                handlersearch.removeCallbacks(runn);
                                handlersearch.post(runn);

                        } else {
                                showprogress.setVisibility(View.GONE);

                                if (dotask != null) {
                                        if (dotask.getStatus().equals(AsyncTask.Status.RUNNING)) {
                                                dotask.cancel(true);
                                        }
                                }

                                handlersearch.removeCallbacks(runn);

                                _turniList = new ArrayList<Turno>();
                                _turniList.clear();
                                _listview.setAdapter(new CustomBaseAdapter(Ricerca.this,
                                                _turniList));
                        }

                }

                public void beforeTextChanged(CharSequence s, int start, int count,
                                int after) {
                       

                }

                public void afterTextChanged(Editable s) {
               

                }
        };

        Handler handlersearch = new Handler() {

                public void handleMessage(android.os.Message msg) {
                        dotask = new searchtask();
                        dotask.execute();
                };
        };

        private class searchtask extends AsyncTask<Void, Void, Void> {

                protected void onPreExecute() {

                        showprogress.setVisibility(View.VISIBLE);
                };

                protected void onPostExecute(Void param) {
                        // animation.dismiss();
                        showprogress.setVisibility(View.GONE);
                        if (_turniList == null)
                                return;

                        ArrayList<String> item = new ArrayList<String>();

                        for (int i = 0; i < _turniList.size(); i++) {
                                item.add(_turniList.get(i).turno);
                        }

                        myAutoComplete = (AutoCompleteTextView) findViewById(R.id.myautocomplete);

                        myAutoComplete.addTextChangedListener(Ricerca.this);

                        myAutoComplete.setAdapter(new ArrayAdapter<String>(
                                        Ricerca.this,
                                        android.R.layout.simple_dropdown_item_1line, item));

                        _turniList_Temp = new ArrayList<Turno>();

                        for (int i = 0; i < _turniList.size(); i++) {

                                _turniList_Temp.add(_turniList.get(i));

                        }

                        _listview.setAdapter(new CustomBaseAdapter(Ricerca.this,
                                        _turniList_Temp));

                }

                @Override
                protected Void doInBackground(Void... params) {

                        db = new DatabaseHelper(getApplicationContext());
                        db.getWritableDatabase();
                        ArrayList<Turno> turni_list = db.getTurni(query);

                        for (int i = 0; i < turni_list.size(); i++) {

                                String giorno = turni_list.get(i).getGiorno();

                                System.out.println("giorno>>>>>" + giorno);
                                String aNno = turni_list.get(i).getaNno();
                                String mEse = turni_list.get(i).getmEse();
                                String tUrno = turni_list.get(i).getTurno();
                                String oRe = turni_list.get(i).getOre();

                                Turno _Turno = new Turno();

                                _Turno.setGiorno(giorno);
                                _Turno.setAnno(aNno);
                                _Turno.setMese(mEse);
                                _Turno.setTurno(tUrno);
                                _Turno.setOre(oRe);

                                _turniList.add(_Turno);
                        }
                        // _turniList = _parser.getTurnoList();

                        return null;
                }

        }

        private class CustomBaseAdapter extends BaseAdapter {
                LayoutInflater _inflater;

                List<Turno> turniList;

                public CustomBaseAdapter(Context context, List<Turno> turniList) {
                        _inflater = LayoutInflater.from(context);
                        this.turniList = turniList;

                }

                public int getCount() {
                       
                        return turniList.size();
                }

                public Object getItem(int position) {
                       
                        return position;
                }

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

                public View getView(int position, View convertView, ViewGroup parent) {

                        ViewHolder _holder;
                        if (convertView == null) {

                                convertView = _inflater.inflate(R.layout.lista_turno, null);
                                _holder = new ViewHolder();
                                _holder.giorno = (TextView) convertView
                                                .findViewById(R.id.txt_giorno);
                                _holder.mese = (TextView) convertView
                                                .findViewById(R.id.txt_mese);
                                _holder.anno = (TextView) convertView
                                                .findViewById(R.id.txt_anno);
                                _holder.turno = (TextView) convertView
                                                .findViewById(R.id.txt_turno);
                                _holder.ore = (TextView) convertView
                                                .findViewById(R.id.txt_ore);
                               

                                convertView.setTag(_holder);
                        } else {
                                _holder = (ViewHolder) convertView.getTag();
                        }
                       
                        _holder.giorno.setText(turniList.get(position).giorno);

                        _holder.mese.setText(turniList.get(position).mese);
                       
                        _holder.anno.setText(turniList.get(position).anno);
                       
                        _holder.turno.setText(turniList.get(position).turno.trim());

                        _holder.ore.setText(turniList.get(position).ore);
                       
                       

                        return convertView;
                }

                private class ViewHolder {
                        TextView giorno;
                        TextView mese;
                        TextView anno;
                        TextView turno;
                        TextView ore;
                       
                }
        }

        @Override
        public void afterTextChanged(Editable arg0) {
       

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
               

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
       

        }

        //
}
« Ultima modifica: 06 Febbraio 2014, 11:38:33 CET da giannit »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Query e select mirata
« Risposta #1 il: 06 Febbraio 2014, 11:29:14 CET »
0
Ti conviene usare il marcatore per formattare il codice JAVA (questo ) , altrimenti è di difficilissima lettura.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline giannit

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung s4
  • Sistema operativo:
    Android
Re:Query e select mirata
« Risposta #2 il: 06 Febbraio 2014, 11:39:13 CET »
0
Fatto, grazie.