نظام إضافة للقائمة المفضلة بأندرويد الجزء الأول


فهاد التطبيق الجديد من سلسلة أندرويد غادي نشوفو كيفاش نزيدو واحد العنصر فالقائمة المفضلة ديالنا فمثلا ف avito او التطبيقات ديال الإعلانات كتلقى واحد القلب فالإعلان وهو لي كيمكنك باش تزيد شي إعلان ف les favoris فحنا فهاد التطبيق غادي نبرمجو داك ل option ونشوفوا كيفاش نزيدوها للتطبيق ديالنا.

نظرة سريعة بالفيديو

1- الملف Item.java

فأول حاجة غادي نديرو غادي نزيدو project جديد ف android studio ختار Empty Activity سميه FavApplication لي غادي يكون عبارة عن تطبيق ديال الحيوانات من بعد ميتزاد غادي تمشي للمجلد java فيه زيد ملف جديد عبارة عن java class  سميه Item.java فيه غادي نخزنو المعلومات الخاصة بكل حيوان فعندنا المعلومات على شكل des variables و كاين ل constructeur ولgetters وsetters الكود ديال الملف هو:


                                package com.example.belasri.favapplication;

/**
 * Created by belasri on 15/02/18.
 */

public class Item {

    private String title;
    private int imageUrl;
    private String itemId;

    public Item(String title, int imageUrl, String itemId) {
        this.title = title;
        this.imageUrl = imageUrl;
        this.itemId = itemId;
    }

    public Item(){

    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(int imageUrl) {
        this.imageUrl = imageUrl;
    }

    public String getItemId() {
        return itemId;
    }

    public void setItemId(String itemId) {
        this.itemId = itemId;
    }
}
                            

2- الملف Constants.java

دائما فالمجلد java  زيد ملف جديد اختار java class سميه Constants.java ف فالتطبيق ديالنا غادي نخدمو ب sqlite باش نخزنوا المعلومات ديالنا وفهاد الملف غادي يكونوا عندنا les variables لي غادي تكون فيهم إسم قاعدة البيانات la table  و les champs الكود ديال الملف هو :

                                package com.example.belasri.favapplication;

/**
 * Created by belasri on 15/02/18.
 */

public class Constants {
    public static final String DATABASE_NAME = "favourites";
    public static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "listFavs";
    public static final String KEY_ID = "id";
    public static final String ITEM_TITLE = "title";
    public static final String ITEM_IMAGE = "imageUrl";
    public static final String ITEM_ID = "ItemId";
}
                            

3- DatabaseHandler.java

دائما فالمجلد java  زيد ملف جديد اختار java class سميه DatabaseHandler.java فهاد الملف لي سبق شرحناه فدروس سابقة كاين les fonctions لي غادي نحتاج ففيه كن créer la base de données و la table وعندي les fonctions لي كي يزيدو حيوان ف la table ديال les favoris أو كيمسحوا منها بالإضافة لل fonction لي كت retourner les favoris كاملين الكود ديال الملف هو : 

                                package com.example.belasri.favapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.util.ArrayList;

/**
 * Created by belasri on 15/02/18.
 */

  public class DataBaseHandler extends SQLiteOpenHelper {

        private ArrayList<Item> itemsList = new ArrayList<>();


        public DataBaseHandler(Context context) {
            super(context,Constants.DATABASE_NAME,null,Constants.DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            String CREATE_TABLE = "CREATE TABLE "+ Constants.TABLE_NAME + "(" +
                    Constants.KEY_ID + " INTEGER PRIMARY KEY ," + Constants.ITEM_TITLE + " TEXT ," +
                    Constants.ITEM_IMAGE + " INTEGER," + Constants.ITEM_ID + " TEXT);";
            db.execSQL(CREATE_TABLE);
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(" DROP TABLE IF EXISTS" + Constants.TABLE_NAME);
            //create a new one
            onCreate(db);
        }
        //add fav
        public void addFav(String title,int image,String item_id){
            SQLiteDatabase dba = this.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put(Constants.ITEM_TITLE,title);
            values.put(Constants.ITEM_ID,item_id);
            values.put(Constants.ITEM_IMAGE,image);
            dba.insert(Constants.TABLE_NAME, null, values);
            Log.v("fav added", "yes");
            dba.close();
        }
        //delete fav
        public void deleteFavourite(String id){
            SQLiteDatabase dba = this.getReadableDatabase();
            dba.delete(Constants.TABLE_NAME, Constants.ITEM_ID + " = ? ", new String[]{String.valueOf(id)});
            dba.close();
        }
        //delete fav
        public Boolean isFavourite(String id){
            SQLiteDatabase dba = this.getReadableDatabase();
            String query = String.format("SELECT * FROM  listFavs WHERE  ItemId='%s';",id);
            Cursor cursor = dba.rawQuery(query,null);
            if(cursor.getCount() <= 0){
                cursor.close();
                return false;
            }
            cursor.close();
            return true;
        }
        public ArrayList<Item> getFavs(){
            itemsList.clear();
            SQLiteDatabase dba = this.getReadableDatabase();
            Cursor cursor = dba.query(Constants.TABLE_NAME,new String[]{Constants.KEY_ID,Constants.ITEM_TITLE,Constants.ITEM_IMAGE,Constants.ITEM_ID},null,null,null,null,Constants.KEY_ID + " DESC ");
            if(cursor.moveToNext()){
                do {
                    Item item = new Item();
                    item.setItemId(cursor.getString(cursor.getColumnIndex(Constants.ITEM_ID)));
                    item.setTitle(cursor.getString(cursor.getColumnIndex(Constants.ITEM_TITLE)));
                    item.setImageUrl(cursor.getInt(cursor.getColumnIndex(Constants.ITEM_IMAGE)));
                    itemsList.add(item);
                    Log.d("adInfo",item.getItemId());
                }while(cursor.moveToNext());
            }
            cursor.close();
            dba.close();
            return itemsList;
        }
  }
                            

4- الملف list_item.xml

 سير للمجلد res/layout فيه غادي تزيد ملف جديد سميه  list_item.xml فهاد لملف كاين الصورة والإسم ديال الحيوان والأيكون لي غادي تاخد القلب ولي كتمكن من الإضافة للقائمة المفضلة ولي غادي يتزاد لل ListView ولي غادي تكون فل activity_main.xml الكود ديال الملف هو:


                                    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <RelativeLayout
        android:background="#fff"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_marginBottom="10dp"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="250dp">
            <ImageView
                android:id="@+id/listImg"
                android:scaleType="fitXY"
                android:src="@drawable/cat"
                android:layout_width="match_parent"
                android:layout_height="200dp" />
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="60dp">
                <TextView
                    android:id="@+id/title"
                    android:textSize="20dp"
                    android:padding="15dp"
                    android:textColor="#000000"
                    android:text="this is the title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
                <ImageView
                    android:id="@+id/favIcon"
                    android:padding="10dp"
                    android:tint="#ff0000"
                    android:layout_marginLeft="170dp"
                    android:backgroundTint="#fff"
                    android:src="@drawable/emptyheart"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
</android.support.constraint.ConstraintLayout>
                                

5- activity_main.xml

دائما ف res/layout فيها غادي تلقى الملف activity_main.xml فهاد لملف كاين ListView لي غادي تاخد الملف لي قادينا من قبل ولي ف MainActivity.java غادي يكون لكود لي كيزيد الحيوانات ديالنا فيها الكود ديال الملف هو :

                                    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.belasri.favapplication.MainActivity">
    <ListView
        android:id="@+id/liste"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</android.support.constraint.ConstraintLayout>
                                


إشترك في قناتنا على اليوتيوب

بحث في الموقع


إشترك للتوصل بالجديد