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


فهاد الجزء الثاني من نظام إضافة للقائمة المفضلة بأندرويد غادي نشوفوا كيفاش نزيدو ل menu لي غادي تمكن من التوجه نحو الملف لي كيعرض la liste des favoris وغادي نشوفو أيضا كيفاش نعرضوا الحيوانات فل MainActiviy فل ListView. 

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

1- الملف top_menu.xml

فالمجلد res/layout زيد ملف جديد سميه top_menu.xml فيه غادي يكون الكود لي كيمكن باش نزيدوا menu ف top bar ديال التطبيق ولي غادي تاخد ل icone ديال قلب الكود ديال الملف هو :

                                <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/topFavMenu"
        android:title="Favouris"
        android:iconTint="@color/colorAccent"
        android:icon="@drawable/fullheart"
        app:showAsAction="always"/>
</menu>
                            

2- الملف MainActivity.java

ف dossier java كاين الملف MainActivity.java فيه كنسترجع ListView لي زدنا بل id ديالها منبعد عندي deux arrays وحدة كتاخد les images ولي كاينين ف dossier drawable ولي كنسترجعهم بل id ديالهم ووحدة ديال les noms منبعد كن créer l'objet من la classe ListAdapter لي غادي نزيدوها من بعد وكنعطيه les deux arrays وعندي أيضا لكود لي كيمكن المستخدم ملي يكليكي على لقلب لي فل menu كيدينا لل FavActivity لي غادي نزيدوها من بعد الكود ديال الملف هو :

                                package com.example.belasri.favapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    ListView mList;
    String[] titles ={
            "Mon chat",
            "Mon chien"
    };
    Integer[] images ={
            R.drawable.cat,
            R.drawable.dog
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListAdapter adapter = new ListAdapter(this,titles,images);
        mList = (ListView)findViewById(R.id.liste);
        mList.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.top_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id == R.id.topFavMenu){
            Intent favActivity = new Intent(MainActivity.this,FavActivity.class);
            startActivity(favActivity);
        }
        return super.onOptionsItemSelected(item);
    }
}
                            

3- الملف ListAdapter.java

منبعد فنفس dossier لي هو java زيد ملف جديد سميه ListAdapter.java ولي سبق شفناه فدروس سابقة ولي المهمة ديالو كياخد les deux tables لي رسلنالو وكياخد ايضا الملف list_item.xml وكيسترجع TexView ول Image لي فيه وكيزيد les noms ف TextView وles images فل Image وهنا كنسترجعوا ايضا ل icone لي عبارة عن قلب وكن créer la classe من l'objet DatabaseHandler وكنتحقق بل fonction isFavourite لي كتاخد ل position ديال ال item وكنتحقق يلا كان ف les favoris كن afficher لقلب عامر مكنش كن afficher لقلب خاوي منبعد ف onClick ديالها كندير نفس الشي كنتحقق واش ف les favouris كانت كنمسحها بل fonction deleteFavourite مكنتش كنزيدها ف les favouris بل fonction addFav الكود ديال الملف هو : 

                                package com.example.belasri.favapplication;

import android.app.Activity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

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

public class ListAdapter extends ArrayAdapter<String>{
    private  Activity context;
    private  String[] title;
    private  Integer[] image;
    private DataBaseHandler dba;
    public ListAdapter(Activity context, String[] title, Integer[] image) {
        super(context, R.layout.list_item,title);
        this.context=context;
        this.title=title;
        this.image=image;
    }
    public View getView(final int position, View view, ViewGroup parent) {
        LayoutInflater inflater=context.getLayoutInflater();
        View rowView=inflater.inflate(R.layout.list_item, null,true);

        TextView txtTitle = (TextView) rowView.findViewById(R.id.title);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.listImg);
        final ImageView favImage = (ImageView) rowView.findViewById(R.id.favIcon);
        txtTitle.setText(title[position]);
        imageView.setImageResource(image[position]);
        dba = new DataBaseHandler(context);
        if(dba.isFavourite(String.valueOf(position))){
            favImage.setImageResource(R.drawable.fullheart);
        }else{
            favImage.setImageResource(R.drawable.emptyheart);
        }
        favImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(!dba.isFavourite(String.valueOf(position))){
                    dba.addFav(title[position],image[position],String.valueOf(position));
                    Log.d("image url stored",image[position].toString());
                    favImage.setImageResource(R.drawable.fullheart);
                    Toast.makeText(context,title[position] +  " Ajouté à vos favouris", Toast.LENGTH_SHORT).show();
                    Log.d("favouritestored", dba.getFavs().get(0).getTitle());
                }else{
                    dba.deleteFavourite(String.valueOf(position));
                    favImage.setImageResource(R.drawable.emptyheart);
                    Toast.makeText(context,title[0]+  " Retiré de votre liste de favouris", Toast.LENGTH_SHORT).show();
                }
            }
        });
        return rowView;
    }
}
                            

4- الملف activity_fav.xml

منبعد ف dossier java زيد Activity جديدة اختار Empty Activity سميها FavActivity منبعد سير ل res/layout غادي تلقى لملف activity_fav.xml فيه زدنا RecyclerView لي كتخدم بنفس الطريقة ديال ListView ولي غادي يتعرضوا فيها les favoris ديالنا وعندنا ايضا واحد TextView لي فيها واحد القلب ولي كتبان يلا مكان عندنا حتى شي Favoris كتبان الكود ديال الملف هو :

                                    <?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.FavActivity">
    <RelativeLayout
        android:id="@+id/emptyFav"
        android:layout_width="match_parent"
        android:background="#fff"
        android:visibility="gone"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/empty_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/colorPrimary"
            android:layout_centerInParent="true"
            android:layout_below="@+id/emptyHeart"
            android:textSize="30sp"
            android:text="Aucun Element" />
        <ImageView
            android:id="@+id/emptyHeart"
            android:src="@drawable/bigheart"
            android:tint="@color/colorPrimary"
            android:layout_marginRight="10dp"
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/listeFavs"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</android.support.constraint.ConstraintLayout>
                                


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

بحث في الموقع


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