Soru & Cevap

Listview içindekileri database içine atma

05.05.2016 - 06:27
veritabanı.class

package com.verigirisi;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.ArrayAdapter;

/**
 * Created by Administrator on 05.05.2016.
 */
public class Veritabani {
    private static final String VERITABANI = "veriler";
    private static final int SURUM = 1;
    private static final String TABLO = "musteriler";

    private static final String KEY_ID = "_id";
    private static final String KEY_ADSOYAD = "adsoyad";
    private static final String KEY_KODLAR = "kodlar";

    public final Context contextim;
    private VeritabaniHelper veritabanihelper;
    private SQLiteDatabase veritabanim;

    public Veritabani(Context c) {
        this.contextim = c;

    }
    public Veritabani baglantiyi_ac(){
        veritabanihelper = new VeritabaniHelper(contextim);
        veritabanim=veritabanihelper.getWritableDatabase();
        return this;
    }
    public void baglantiyi_kapat(){
        veritabanihelper.close();
    }

    public void kisibilgisinikaydet(String adim, String soyadi) {
        ContentValues cv = new ContentValues();
        cv.put(KEY_ADSOYAD, adim);
        cv.put(KEY_KODLAR, soyadi);
        veritabanim.insert(TABLO, null, cv);
    }

    public String tumKayitlar() {
        String sutunlar[]=new String[]{KEY_ADSOYAD};
        Cursor c=veritabanim.query(TABLO,sutunlar,null,null,null,null,null);

        String tumKayitlar="";

        int MusteriSiraNo=c.getColumnIndex(KEY_ADSOYAD);
        for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){

            tumKayitlar=tumKayitlar+c.getString(MusteriSiraNo)+" \n";

        }


        return tumKayitlar;


    }




    private static class VeritabaniHelper extends SQLiteOpenHelper {

        public VeritabaniHelper(Context contextim) {
            super(contextim, VERITABANI, null, SURUM);
        }

        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE " + TABLO + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_ADSOYAD + " TEXT, " + KEY_KODLAR + " TEXT);");

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXIST " + TABLO + "");
            onCreate(db);
        }



    }
}


yenikayit.class

package com.verigirisi;

import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by Administrator on 05.05.2016.
 */
public class yenikayit extends AppCompatActivity {

    private Button kodutara, kodulisteyeekle, resimekle,mailgonder,kaydet;
    private ListView listekodlar, listeresimler;
    private ArrayList<String> arraykodlar= new ArrayList<String>();
    private ArrayList<Uri> arrayresimler = new ArrayList<Uri>();
    private EditText musteriadi, kodlar;
    private ArrayAdapter<String> adapterkodlar;
    private ArrayAdapter<Uri> adapterresimler;


    final int RQS_LOADIMAGE = 0;
    final int RQS_SENDEMAIL = 1;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yenikayit);

        kodutara=(Button)findViewById(R.id.btnKoduOkut);
        kodulisteyeekle=(Button)findViewById(R.id.btnKoduListeyeEkle);
        resimekle=(Button)findViewById(R.id.btnResimEkle);
        mailgonder=(Button)findViewById(R.id.btnGonder);

        kaydet=(Button)findViewById(R.id.btnKaydet);

        resimekle.setOnClickListener(btnAddFileOnClickListener);
        mailgonder.setOnClickListener(btnSendOnClickListener);
        kaydet.setOnClickListener(btnKaydetOnClickListener);
        /////////////////////////
        musteriadi=(EditText)findViewById(R.id.txtMusteri);
        kodlar=(EditText)findViewById(R.id.txtKodlar);
        //Listeleri tanıttım///



        ///////////////////////////////////////
        adapterkodlar=new ArrayAdapter<String>(this,R.layout.list_item,R.id.txtitem,arraykodlar);
        listekodlar=(ListView)findViewById(R.id.lstKod);
        listekodlar.setAdapter(adapterkodlar);


        adapterresimler=new ArrayAdapter<Uri>(yenikayit.this,android.R.layout.simple_list_item_1,arrayresimler);
        listeresimler=(ListView)findViewById(R.id.lstResim);
        listeresimler.setAdapter(adapterresimler);


        listekodlar.setOnItemClickListener(new AdapterView.OnItemClickListener() {// buradaki kod listede tıklama ile silme işlemi yapıyor.
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                AlertDialog.Builder adb=new AlertDialog.Builder(yenikayit.this);
                adb.setTitle("Delete?");
                adb.setMessage("Are you sure you want to delete ");
                final int positionToRemove = position;
                adb.setNegativeButton("Cancel", null);
                adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        arraykodlar.remove(positionToRemove);
                        adapterkodlar.notifyDataSetChanged();
                    }});
                adb.show();
            }
        });
    }
    public void KoduEkle(View v)
    {
        String newItem = kodlar.getText().toString();
        arraykodlar.add(newItem);
        adapterkodlar.notifyDataSetChanged();
        kodlar.setText("");
    }



    View.OnClickListener btnKaydetOnClickListener= new View.OnClickListener(){

        @Override
        public void onClick(View v)
        {
            String adim = musteriadi.getText().toString();
            //String kodlarim = kodlar.getText().toString();
            String kodlarim = listekodlar.toString();

            Veritabani db = new Veritabani(yenikayit.this);
            db.baglantiyi_ac();
            db.kisibilgisinikaydet(adim, kodlarim);

            db.baglantiyi_kapat();
            Dialog dialog=new Dialog(yenikayit.this);
            dialog.setTitle("EKLEME İŞLEMİ");
            TextView tvSonuc=new TextView(yenikayit.this);
            tvSonuc.setText("BAŞARILI");
            setContentView(tvSonuc);
            dialog.show();

        }};
    View.OnClickListener btnAddFileOnClickListener= new View.OnClickListener(){

        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(intent, RQS_LOADIMAGE);
        }};
    View.OnClickListener btnSendOnClickListener= new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            String emailAddress = "ozgur.altinel@neskar.com";
            String emailSubject = musteriadi.getText().toString();
            String emailText = musteriadi.getText().toString();
            String emailAddressList[] = {emailAddress};

            Intent intent = new Intent();
            intent.putExtra(Intent.EXTRA_EMAIL, emailAddressList);
            intent.putExtra(Intent.EXTRA_SUBJECT, emailSubject);
            intent.putExtra(Intent.EXTRA_TEXT, arraykodlar.toString().replace("[", "").replace(",", "\n").replace("]", ""));

            if(arrayresimler.isEmpty()){
                //Send email without photo attached
                intent.setAction(Intent.ACTION_SEND);
                intent.setType("plain/text");
                intent.putExtra(Intent.EXTRA_TEXT, arraykodlar.toString().replace("[", "").replace(",", "\n").replace("]", ""));


            }else if(arrayresimler.size() == 1){
                //Send email with ONE photo attached
                intent.setAction(Intent.ACTION_SEND);
                intent.putExtra(Intent.EXTRA_STREAM, arrayresimler.get(0));
                intent.setType("image/*");
                intent.putExtra(Intent.EXTRA_TEXT, arraykodlar.toString().replace("[", "").replace(",", "\n").replace("]", ""));
            }else{
                //Send email with MULTI photo attached
                intent.setAction(Intent.ACTION_SEND_MULTIPLE);
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayresimler);
                intent.setType("image/*");
                intent.putExtra(Intent.EXTRA_TEXT, arraykodlar.toString().replace("[", "").replace(",", "\n").replace("]", ""));
            }

            startActivity(Intent.createChooser(intent, "Choice App to send email:"));

        }};
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK){
            switch(requestCode){
                case RQS_LOADIMAGE:
                    Uri imageUri = data.getData();
                    arrayresimler.add(imageUri);
                    adapterresimler.notifyDataSetChanged();
                    break;
                case RQS_SENDEMAIL:
                    break;
            }
        }
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (scanResult!=null )//kodu okutmadan çıkınca programı kapatıyor
        {
            String barkod;
            barkod = scanResult.getContents();
            arraykodlar.add(barkod);
            adapterkodlar.notifyDataSetChanged();
            Button yoklama_buton=(Button)findViewById(R.id.btnKoduOkut);
            yoklama_buton.setEnabled(true);
        }
        //else{
        // AlertDialog.Builder diyalogOlusturucu = new AlertDialog.Builder(MainActivity.this);
        // diyalogOlusturucu.setMessage("Kodu okutmadınız...");
        //  diyalogOlusturucu.create().show();
        //}
    }
    public void tara(View v)
    {
        IntentIntegrator integrator = new IntentIntegrator(this);
        integrator.initiateScan();
    }
}


Arkadaşlar.

Uygulama Şu şekilde.

Müşteri adı-Siparişler adında iki alanım var.

1 müşteri birden fazla sipariş verdiği için siparişleri ilk ekranda Listview içine atıyorum. İşlem bittikten sonra kaydet butonuna basarak müşteri adını ve siparişleri kaydetmek istiyorum. İnternetteki örneklerin hepsi edittext içindeki veriyi kaydetmek için verilmiş. Listview içindeki birden fazla veriyi nasıl kaydederim. Örnek verebilecek varmı?

 

157 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user nurdan.kiratlioglu
nurdan.kiratlioglu
16.06.2016 - 10:56
teşekkürler
Profile picture for user gürcanataman
gürcanataman
06.05.2016 - 06:22

Veritabanı sınıfınızı incelediğim kadarıyla yapmak istediğiniz şeyi tek bir tabloyla yapamazsınız. Anladığım kadarıyla:

Bir müşteri adını yazacak, siparişleri ekleyecek (birden fazla) kaydet deyince veritabanına bu siparişler kaydedilecek. Eğer istediğiniz böyle bir şeyse veritabanında birbirleriyle bağlantılı en az iki tabloya ihtiyaç var demektir. 

Siparişleri kod ekle olarak belirttiğiniz için tam olarak nasıl bir sipariş sistemi yapmaya çalıştığınızı anlamadım Bu yüzden projenizle bir alakası olmasa da örnek olması açısından bir manavsınız ve dükkanınızda elma, armut, üzüm, kiraz adlı ürünleriniz var diyelim Ve bir müşteri birden fazla ürün almak isteyebilir. Bu durumda:

Bir tane musteriler adında bir tablo bir tane de siparisler adında bir tablo olmalı

musteriler tablosunda musteri_id, musteri_adi vs. olmalı.

siparisler tablosunda siparis_id, musteri_id, siparis_urunadi vb. sütunlar olmalı

Ahmet adlı müşteri sisteme girdi, adını yazdı. Elma ve armut ekledi sepetine kaydet dedi.

Önce müşteriler tablosuna kaydı yapacaksınız:

müsteri_id : 1 || müsteri_Adi: Ahmet 

Ardından kaydederken aldığınız id ile de siparişleri tek tek kaydedeceksiniz:

siparis_id: 1|| musteri_id: 1|| siparis_urunadi: elma
siparis_id: 2|| musteri_id: 1|| siparis_urunadi: armut

Böylece müşterinin idine göre siparişleri çekebilirsiniz tablodan, mantığı bu şekilde umarım doğru anlamışımdır!

 

picture-23301-1432907931.jpg
bcs_crew
06.05.2016 - 11:24

Eğer direk listview içersine aktarırsanız işi uzatmış olursunuz, ama bir liste oluşturup listviewi bu listeye göre ayarlarsanız işiniz daha kolay olacaktır.

Örnek;

List<Siparis> liste = new ArrayList<Siparis>();
ListeAdapter adapter = new ListeAdapter(); //BaseAdapter türünden
listView.setAdapter = adapter();

Sipariş listesine ürün mü ekledi, sildimi veya düzenledimi;

adapter.notifydatasetchanged();

Not : Konu ile ilgili gün içersinde bloguma yazı ekleyeceğim, ordan detaylı kodlara ulaşabilirsin

Özgür ALTINEL
06.05.2016 - 02:31
Furkan Bey. Blog adresinizi de paylaşırmısınız takip edeyim.
Profile picture for user gürcanataman
gürcanataman
05.05.2016 - 11:17
for döngüsüyle liste elemanlarını tek tek ekleyebilirsiniz. Kodlarınızın ilgili bölümünü yazarsanız daha net cevap veebilirim.
Özgür ALTINEL
06.05.2016 - 02:25
soruma ekledim kodları