Χρησιμοποιω το Xamarin για να φτιαξω μια εφαρμογη Android.

Χρησιμοποιω την SQLite για βαση δεδομενων.

Εχω εναν πινακα ProductCategories τον οποιο χρησιμοποιω τον παρακατω κωδικα:

Κώδικας:
using System;using System.Collections.Generic;
using System.Text;
using SQLite;


namespace MyShopClean
{
    public class ProductCategories
    {
        [PrimaryKey, AutoIncrement]


        public int ProductCategoryID { get; set; }


        [MaxLength(250), Unique]
        public string CategoryName { get; set; }
    }
}
Οπως βλεπετε εχει δυο πεδια : το ProductCategoryID το οποιο ειναι και το primary key και μια κατηγορια με το ονομα (CategoryName).


Εχω μια activity (CategoriesActivity.cs) και τρεχοντας το παρακατω ερωτημα παιρνω τα ονοματα των κατηγοριων σε μια λιστα στην οποια μπορεις να "πατησεις" σε καθε στοιχειο της. Ακολουθει snippet της activity:

Κώδικας:
ICursor selectData = sqliteDB.RawQuery("select * from ProductCategories", new string[] { });
            if (selectData.Count > 0)
            {
                selectData.MoveToFirst();
                do
                {
                    ProductCategories user = new ProductCategories();
                    user.CategoryName = selectData.GetString(selectData.GetColumnIndex("CategoryName"));
                    user.ProductCategoryID = selectData.GetInt(selectData.GetColumnIndex("ProductCategoryID"));
                    
                    lstUser.Add(user);
                }
                while (selectData.MoveToNext());
                selectData.Close();


            }

Εχω εναν πινακα Products με τον παρακατω κωδικα:

Κώδικας:
using System;
using System.Collections.Generic;
using System.Text;
using SQLite;


namespace MyShopClean
{
    public class Products
    {
        [PrimaryKey, AutoIncrement]


        public int ProductID { get; set; }


        public int ProductCategoryID { get; set; }


        [MaxLength(250), Unique]
        public string ProductName { get; set; }


        public double ProductPrice { get; set; }


    }
}
To ProductCategoryID ειναι ξενο κλειδι σε αυτον και τον συνδεει με τον πινακα ProductCategories.

Σκοπος μου ειναι οταν επιλεγει ο χρηστης μια κατηγορια το κλειδι αυτο καθως παταει το οποιο για παραδειγμα μπορει να εχει την ακεραια τιμη =1 απο τον πινακα ProductCategories να μεταφερεται σε μια καινουρια activity πχ ProductsActivity.cs


ωστε κανοντας το καταλληλο SQL ερωτημα να του εμφανιζει μονο τα products της κατηγοριας αυτης.

Το ερωτημα αν δεν κανω λαθος θα ειναι της μορφης :

Cursor selectData = sqliteDB.RawQuery("select ProductName from Products where Products.ProductCategoryID = ProductCategories.ProductCategoryID" , new string[] { });


Πως να το πετυχω αυτο? Θελω δλδ βοηθεια στο να μεταφερω την τιμη απο το ενα activity στο αλλο , καθως και ισως βοηθεια στο sql ερωτημα που πρεπει να γινει...

- - - Updated - - -

Update: Στο CategoriesActivity.cs προσθεσα το κωδικα:

Κώδικας:
lv.ItemClick += (sender, e) => {
                var intent = new Intent(this, typeof(ProductsActivity));
                
                intent.PutExtra("selectedItemId", e.Position);
                StartActivity(intent);
               
            };
οπου lv η listview . και μετεφερα την τιμη αυτου που παταω στην ProductsActivity προσθετωντας αυτο:

Κώδικας:
var selectedItemId = Intent.Extras.GetInt("selectedItemId");
Τσεκαρα την τιμη και για το πρωτο αντικειμενο της λιστας ειναι 0 για το δευτερο 1 και ουτω καθεξης.


Τωρα μετεφερα την τιμη και μενει πως θα δομησω το SQL query , αν σκεφτει κατι καποιος ας μου το πει.

- - - Updated - - -

Update2:

ICursor selectData = sqliteDB.RawQuery("select * from Products where ProductCategoryID = selectedItemId", new string[] { });

Unhandled Exception:

Android.Database.Sqlite.SQLiteException: no such column: selectedItemId (code 1): , while compiling: select * from Products where ProductCategoryID = selectedItemId occurred

Εαν βαλω για παραδειγμα ICursor selectData = sqliteDB.RawQuery("select * from Products where ProductCategoryID = 1", new string[] { });

τοτε δουλευει.

- - - Updated - - -

Update 3 : Τελικα ελυσα ολα τα θεματα αυτου του ποστ. Συγγνωμη για το ποστ αλλα δεν περιμενα να τα καταφερω, εστω και εαν ετρωγα ολη την ημερα ... τελικα ειναι απο τις ημερες που ολα δουλευουν....

- - - Updated - - -

Update 4: Τελικα δεν επιλυθηκε το προβλημα .... ημουν τυχερος -ατυχος.

Ο κωδικας intent.PutExtra("selectedItemId", e.Position); φυσικα δινει ενα ακεραιο αριθμο στη θεση που ειναι στη λιστα το clickable αντικειμενο ενω εγω θελω να παιρνω το ID του απο την Database .... αλλα νταλα εφτιαξα