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


فهاد الجزء الثالت والأخير من نظام إضافة للقائمة المفضلة بأندرويد غادي نكملو الملفات لي بقاو ولي خاصين  بل FavActivity ولي غادي تمكنا من عرض les animaux لي زدنا فالقائمة المفضلة ديالنا فهدا آخر جزء ويمكنلك تحمل لكود سورس من زر تحميل الكود.

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

1- الملف list_fav_item.xml

سير للمجلد res/layout فيه غادي تزيد ملف جديد سميه  list_fav_item.xml فهاد لملف كاين الصورة والإسم ديال الحيوان ولي غادي يتزاد لل ListView ولي زدنا ف activity_fav.xml الكود ديال الملف هو:


                                <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:background="#fff"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <LinearLayout
            android:layout_marginBottom="10dp"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="250dp">
            <ImageView
                android:id="@+id/listFavImg"
                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/favTitle"
                    android:textSize="20dp"
                    android:textAlignment="center"
                    android:padding="15dp"
                    android:textColor="#000000"
                    android:text="this is the title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
                            

2- الملف FavActivity.java

ف dossier java كاين الملف FavActivity.java فيه كنسترجع ListView لي زدنا بل id ديالها منبعد عندي ArrayList سميتها dbaFavs كتاخد les favoris ولي غادي نسترجعوهم من la base de données منبعد مكن créer l'objet من la classe DataBaseHandler وعندي ايضا référence ل la classe FavListViewAdapter ولي غادي نزيدوها منبعد عندي ل fonction getData لي كندير بها ل connexion مع la base منبعد كنخدم بل fonction getFavs لي كت retourner les favoris لي عندنا فقاعدة البيانات وكنزيد ArrayList أخرى لي كتاخد les favoris لي استرجعنا من بعد كنخدم ب foreach وكن créer l'objet من la classe Item وكنزيد كل Item فل ArrayList dbaFavs منبعد مكنتحقق يلا مكان عندي حتى شي favoris كنعرض TextView لي كتقول حتى شي favoris مكاين كان عندي les favoris كنرسلهم لل  FavListViewAdapter لي غادي يمكن من عرضهم ف ListView لي زدنا فل activity_fav.xml الكود ديال الملف هو : 

                                package com.example.belasri.favapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.RelativeLayout;

import java.util.ArrayList;

public class FavActivity extends AppCompatActivity {
    RecyclerView mList;
    private DataBaseHandler dba;
    private ArrayList<Item> dbaFavs = new ArrayList<>();
    private FavListViewAdapter favAdapter;
    private RelativeLayout relativeLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fav);
        mList = (RecyclerView)findViewById(R.id.listeFavs);
        relativeLayout = (RelativeLayout) findViewById(R.id.emptyFav);
        mList.setLayoutManager(new GridLayoutManager(this,1));
        mList.setItemAnimator(new DefaultItemAnimator());
        relativeLayout = (RelativeLayout) findViewById(R.id.emptyFav);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getData();
    }

    private void getData() {
        dbaFavs.clear();
        dba = new DataBaseHandler(getApplicationContext());
        ArrayList<Item> favsFromDb = dba.getFavs();
        for(int i = 0; i < favsFromDb.size() ; i++){
            String title = favsFromDb.get(i).getTitle();
            int image  = favsFromDb.get(i).getImageUrl();
            Item item = new Item();
            item.setTitle(title);
            item.setImageUrl(image);
            dbaFavs.add(item);
            Log.d("item added now",dbaFavs.get(0).getTitle());
        }
        dba.close();
        if(dbaFavs.isEmpty()){
            mList.setVisibility(View.GONE);
            relativeLayout.setVisibility(View.VISIBLE);
        }else {
            mList.setVisibility(View.VISIBLE);
            relativeLayout.setVisibility(View.GONE);
        }
        //set the adapter
        favAdapter = new FavListViewAdapter(FavActivity.this,dbaFavs);
        mList.setAdapter(favAdapter);
        favAdapter.notifyDataSetChanged();
    }
}
                            

3- الملف FavListViewAdapter.java

منبعد فنفس dossier لي هو java زيد ملف جديد سميه FavListViewAdapter.java ولي المهمة ديالو كياخد les favoris  لي رسلنالو وكياخد ايضا الملف list_fav_item.xml وكيسترجع TexView ول Image لي فيه وكيزيد les noms ف TextView وles images فل Image راه سبق درنا نفس الطريقة فدروس سابقة الكود ديال الملف هو : 

                                package com.example.belasri.favapplication;

import android.app.Activity;
import android.support.v7.widget.RecyclerView;
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;

import com.squareup.picasso.Picasso;

import java.util.List;

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

public class FavListViewAdapter extends RecyclerView.Adapter<FavListViewAdapter.MyViewHolder>  {
    private List<Item> mData;
    private LayoutInflater mInflater;
    private Activity activity;

    public FavListViewAdapter(Activity context, List<Item>data){
        this.activity = context;
        this.mData = data;
        this.mInflater = LayoutInflater.from(context);
    }
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.list_fav_item,parent,false);
        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        Item currentObjs = mData.get(position);
        holder.setData(currentObjs,position);
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }
    class MyViewHolder extends RecyclerView.ViewHolder{
        Item item;
        TextView title;
        ImageView imageView;
        int position;
        public MyViewHolder(View itemView) {
            super(itemView);
            title = (TextView) itemView.findViewById(R.id.favTitle);
            imageView = (ImageView) itemView.findViewById(R.id.listFavImg);
        }

        public void setData(Item currentObjs, int position) {
            this.title.setText(currentObjs.getTitle());
            imageView.setImageResource(currentObjs.getImageUrl());
            this.position = position;
            this.item = currentObjs;
        }
    }
    public Item getAd(int position){
        return (mData != null) ? mData.get(position) : null;
    }
}
                            

4- الملف build.gradle

ف builde.gradle ديال ل app كتزيد هاد les deux biblio باش كتخدم ب RecyclerView و Picasso منبعد متزيدهم كليكي على sync باش يتزادو لل projet :

                                    compile 'com.squareup.picasso:picasso:2.5.2'
 compile 'com.android.support:recyclerview-v7:26.1.0'
                                


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

بحث في الموقع


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