Autore Topic: fragment +list by sqlite  (Letto 553 volte)

Offline brux88

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc hero
  • Sistema operativo:
    windows7/server2008/vista
fragment +list by sqlite
« il: 21 Gennaio 2013, 17:25:43 CET »
0
Ciao a tutti sono nuovo del forum mi sto avvicinando al mondo android...ho  sviluppo in altri linguaggi... stavo provando ad creare una semplice lista di clienti con i relativi dettagli ho seguito gli ottimi tutorial relativi alla gestione dei fragment. la mia situazione è un po diversa ho creato un app che funziona senza fragment  a cui ho aggiunto l actionbarsharlok adesso vorrei poter adattargli i fragment ma non ci son riuscito ovviamente ho provato ad utilizzare le librerie di sharloks ma senza risultato vi riporto le due activity semplici  =(
la mia activity principale:
Codice: [Seleziona]
package com.brux.gestionearchivi.clienti;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.brux.gestionearchivi.R;
import android.app.ActionBar;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.FilterQueryProvider;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class ListaClienti extends SherlockActivity {
       
       
       
 public static final String ROW_ID = "row_id";

 private ClientiDbAdapter dbHelper;
 private SimpleCursorAdapter dataAdapter;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_lista_clienti);
         ActionBar ab = getActionBar();
         ab.setTitle("Lista Clienti");
         ab.setIcon(R.drawable.ic_clienti);
     ab.setHomeButtonEnabled(true);
     ab.setDisplayHomeAsUpEnabled(true);
     
          dbHelper = new ClientiDbAdapter(this);
          dbHelper.open();
          displayListView();
 }
 
 @Override
 protected void onResume()
 {
    super.onResume(); 
    new GetClienti().execute((Object[]) null);
  }
 private class GetClienti extends AsyncTask<Object, Object, Cursor>
 {
         ClientiDbAdapter dbHelper = new ClientiDbAdapter(ListaClienti.this);

    @Override
    protected Cursor doInBackground(Object... params)
    {
            dbHelper.open();
       return dbHelper.prendiTuttiClienti();
    }
   
    @Override
    protected void onPostExecute(Cursor result)
    {
            dataAdapter.changeCursor(result); // set the adapter's Cursor
            dbHelper.close();
    }
 }
 private void displayListView() {


  Cursor cursor = dbHelper.prendiTuttiClienti();

  // The desired columns to be bound
  String[] columns = new String[] {
                  ClientiDbAdapter.KEY_CODICE,
                  ClientiDbAdapter.KEY_RAGSOC,
                  ClientiDbAdapter.KEY_PARTITAIVA
    };

  // the XML defined views which the data will be bound to
  int[] to = new int[] {
    R.id.txtCodice,
    R.id.txtRagioneSociale,
    R.id.txtPartitaIva,
  };

  // create the adapter using the cursor pointing to the desired data
  //as well as the layout information
  dataAdapter = new SimpleCursorAdapter(
    this, R.layout.cliente_dettaglio,
    cursor,
    columns,
    to,
    0);

  ListView listView = (ListView) findViewById(R.id.listaClienti);
  // Assign adapter to ListView
  listView.setAdapter(dataAdapter);


 
 
  listView.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> listView, View view, int position, long id) {
     Intent viewCon = new Intent(ListaClienti.this, InfoClienti.class);
     viewCon.putExtra(ROW_ID, id);
     startActivity(viewCon);
   }
  });

 
  EditText myFilter = (EditText) findViewById(R.id.myFilter);
  myFilter.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {
   }

   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
 Allegati ed altre opzioni
scorciatoie: premi ALT+S per inserire un post o ALT+P per l'anteprima
 

   }

   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
    dataAdapter.getFilter().filter(s.toString());
   }
  });
 
  dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
         public Cursor runQuery(CharSequence constraint) {
             return dbHelper.prendiClientePerNome(constraint.toString());
         }
     });

 }

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
   super.onCreateOptionsMenu(menu);
   MenuInflater inflater = getSupportMenuInflater();
   inflater.inflate(R.menu.clienti_menu, menu);
 
   return true;
}   

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    if (item.getItemId() == android.R.id.home) {
      /*Intent intent = new Intent(this, ListaClienti.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);*/
            ListaClienti.this.finish();
                return true;
        } else if (item.getItemId() == R.id.menu_aggiungi) {
                Intent aggiungiCliente = new Intent(ListaClienti.this, AddEditClienti.class);
                aggiungiCliente.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(aggiungiCliente);
                return true;
        } else {
                return super.onOptionsItemSelected(item);
        }
}
}

infoclienti.java:
Codice: [Seleziona]
package com.brux.gestionearchivi.clienti;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.brux.gestionearchivi.R;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;

public class InfoClienti  extends SherlockActivity{

           private long rowID;
           private TextView codiceV;
           private TextView ragioneSocialeV;
           private TextView ragioneSociale2V;
           private TextView partitaIvaV;
           private TextView indirizzoV;
           private TextView capV;
           private TextView comuneV;
           private TextView provinciaV;
           private TextView emailV;
           private TextView telefonoV;
           
           @Override
           public void onCreate(Bundle savedInstanceState)
           {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_info_clienti);
                         ActionBar ab = getActionBar();
                            ab.setTitle("Info Clienti");
                            ab.setIcon(R.drawable.ic_clienti);
                        ab.setHomeButtonEnabled(true);
                        ab.setDisplayHomeAsUpEnabled(true);
              setUpViews();
              Bundle extras = getIntent().getExtras();
              rowID = extras.getLong(ListaClienti.ROW_ID);
           }
           
           private void setUpViews() {
                   codiceV = (TextView) findViewById(R.id.txtCodice);
                   ragioneSocialeV = (TextView) findViewById(R.id.txtRagioneSociale);
                   ragioneSociale2V = (TextView) findViewById(R.id.txtRagioneSociale2);
                   partitaIvaV = (TextView) findViewById(R.id.txtPartitaIva);
                   indirizzoV = (TextView) findViewById(R.id.txtIndirizzo);
                   capV = (TextView) findViewById(R.id.txtCap);
                   comuneV = (TextView) findViewById(R.id.txtComune);
                   provinciaV = (TextView) findViewById(R.id.txtProvincia);
                   emailV = (TextView) findViewById(R.id.txtEmail);
                   telefonoV = (TextView) findViewById(R.id.txtTelefono);
           }

           @Override
           protected void onResume()
           {
              super.onResume();
              new CaricaClienti().execute(rowID);
           }
           
           private class CaricaClienti extends AsyncTask<Long, Object, Cursor>
           {
                   ClientiDbAdapter dbConnector = new ClientiDbAdapter(InfoClienti.this);
             
              @Override
              protected Cursor doInBackground(Long... params)
              {
                 dbConnector.open();
                 return dbConnector.prendiClientePerId(params[0]);
              }

              @Override
              protected void onPostExecute(Cursor result)
              {
                 super.onPostExecute(result);
           
                 result.moveToFirst();
                 // get the column index for each data item
                 int codiceIndex = result.getColumnIndex("Codice");
                 int ragioneSocialeIndex = result.getColumnIndex("RagioneSociale");
                 int ragioneSociale2Index = result.getColumnIndex("RagioneSociale2");
                 int partitaIvaIndex = result.getColumnIndex("PartitaIva");
                 int indirizzoIndex = result.getColumnIndex("Indirizzo");
                 int capIndex = result.getColumnIndex("Cap");
                 int comuneIndex = result.getColumnIndex("Comune");
                 int provinciaIndex = result.getColumnIndex("Provincia");
                 int emailIndex = result.getColumnIndex("Email");
                 int telefonoIndex = result.getColumnIndex("Telefono");
           
                 codiceV.setText(result.getString(codiceIndex));
                 ragioneSocialeV.setText(result.getString(ragioneSocialeIndex));
                 ragioneSociale2V.setText(result.getString(ragioneSociale2Index));
                 partitaIvaV.setText(result.getString(partitaIvaIndex));
                 indirizzoV.setText(result.getString(indirizzoIndex));
                 capV.setText(result.getString(capIndex));
                 comuneV.setText(result.getString(comuneIndex));
                 provinciaV.setText(result.getString(provinciaIndex));
                 emailV.setText(result.getString(emailIndex));
                 telefonoV.setText(result.getString(telefonoIndex));
           
                 result.close();
                 dbConnector.close();
              }
           }
           
           
           @Override
           public boolean onCreateOptionsMenu(Menu menu)
           {
              super.onCreateOptionsMenu(menu);
              MenuInflater inflater = getSupportMenuInflater();
              inflater.inflate(R.menu.add_menu, menu);
              return true;
           }
           
           @Override
           public boolean onOptionsItemSelected(MenuItem item)
           {
              if (item.getItemId() == android.R.id.home) {
                        Intent intent = new Intent(this, ListaClienti.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(intent);
                        return true;
                } else if (item.getItemId() == R.id.menu_modifica) {
                        Intent addEditCliente =
                           new Intent(this, AddEditClienti.class);
                        addEditCliente.putExtra(ListaClienti.ROW_ID, rowID);
                        addEditCliente.putExtra("Codice", codiceV.getText());
                        addEditCliente.putExtra("RagioneSociale", ragioneSocialeV.getText());
                        addEditCliente.putExtra("RagioneSociale2", ragioneSociale2V.getText());
                        addEditCliente.putExtra("PartitaIva", partitaIvaV.getText());
                        addEditCliente.putExtra("Indirizzo", indirizzoV.getText());
                        addEditCliente.putExtra("Cap", capV.getText());
                        addEditCliente.putExtra("Comune", comuneV.getText());
                        addEditCliente.putExtra("Provincia", provinciaV.getText());
                        addEditCliente.putExtra("Email", emailV.getText());
                        addEditCliente.putExtra("Telefono", telefonoV.getText());
                        startActivity(addEditCliente);
                        return true;
                } else if (item.getItemId() == R.id.menu_elimina) {
                        eliminaCliente();
                        return true;
                } else {
                        return super.onOptionsItemSelected(item);
                }
           }
           
           private void eliminaCliente()
           {
             
              AlertDialog.Builder alert = new AlertDialog.Builder(InfoClienti.this);

              alert.setTitle(R.string.confirmTitle);
              alert.setMessage(R.string.confirmMessage);

              alert.setPositiveButton(R.string.delete_btn,
                 new DialogInterface.OnClickListener()
                 {
                    public void onClick(DialogInterface dialog, int button)
                    {
                       final ClientiDbAdapter dbConnector =   new ClientiDbAdapter(InfoClienti.this);

                       AsyncTask<Long, Object, Object> deleteTask =
                          new AsyncTask<Long, Object, Object>()
                          {
                             @Override
                             protected Object doInBackground(Long... params)
                             {
                                dbConnector.eliminaCliente(params[0]);
                                return null;
                             }
                             
                             @Override
                             protected void onPostExecute(Object result)
                             {
                                finish();
                             }
                          };

                       deleteTask.execute(new Long[] { rowID });               
                    }
                 }
              );
             
              alert.setNegativeButton(R.string.cancel_btn, null).show();
           }
}

layout:
activity_lista_clienti:
Codice: [Seleziona]
<?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">

 <EditText android:id="@+id/myFilter" android:layout_width="match_parent"
  android:layout_height="wrap_content" android:ems="10"
  android:hint="@string/ricerca_hint">
  <requestFocus />
 </EditText>

 <ListView android:id="@+id/listaClienti" android:layout_width="fill_parent"
  android:layout_height="fill_parent" />

</LinearLayout>
activity_info_Clienti.xml:
Codice: [Seleziona]
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
     
   <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:stretchColumns="1"
      android:layout_margin="5dp">
   
       <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Codice"/>
         <TextView
            android:id="@+id/txtCodice"
             style="@style/StyleText"/>
      </TableRow>

      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/RagioneSociale"/>         
         <TextView
            android:id="@+id/txtRagioneSociale"
             style="@style/StyleText"/>
      </TableRow>
     
      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/RagioneSociale2"/>         
         <TextView
            android:id="@+id/txtRagioneSociale2"
             style="@style/StyleText"/>
      </TableRow>
     
     
      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/PartitaIva"/>         
         <TextView
            android:id="@+id/txtPartitaIva"
             style="@style/StyleText"/>
      </TableRow>
     
      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Indirizzo"/>         
         <TextView
            android:id="@+id/txtIndirizzo"
             style="@style/StyleText"/>
      </TableRow>
     
     <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Cap"/>         
         <TextView
            android:id="@+id/txtCap"
             style="@style/StyleText"/>
      </TableRow>
     
      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Comune"/>         
         <TextView
            android:id="@+id/txtComune"
             style="@style/StyleText"/>
      </TableRow>
     
       <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Provincia"/>         
         <TextView
            android:id="@+id/txtProvincia"
             style="@style/StyleText"/>
      </TableRow>
           
      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Email"/>         
         <TextView
            android:id="@+id/txtEmail"
             style="@style/StyleText"/>
      </TableRow>
     
      <TableRow>         
         <TextView
            style="@style/StyleLabel"
            android:text="@string/Telefono"/>         
         <TextView
            android:id="@+id/txtTelefono"
             style="@style/StyleText"/>
      </TableRow>
     
   </TableLayout>
  </ScrollView>
   
come posso adatatre ad esse il fragment per la visualizzazione nei tablet?