كيفية عرض PDF view داخل برنامج اندرويد ستوديو وعمل RecyclerView لعرض اكثر من pdf .

 

كيفية عرض PDF view داخل برنامج اندرويد ستوديو وعمل RecyclerView لعرض اكثر من pdf .

شرح كيف تستطيع عرض اكثر من pdf داخل برنامج android studio


قد تساعدك فكرة اليوم في تطوير تطبيقات الاندرويد والربح منها فكثير يبحث على مطور يقوم بتحويل pdf الى app mobile وفي مقالة اليوم سوف نساعدكم في انشاء تطبيق اندرويد لعرض ملفات البي دي اف وتقريبا الافكار تم شرحها في مقالات سابقه وسوف نقوم بانشاء pdf viewer بسهوله جدا لذلك تابع الشرح جيدا .


تطوير تطبيقات الهواتف الذكية وخصوصا تطوير تطبيقات الاندرويد واحد من اكثر المجالات التي يريد كثير منا تعلمها ويبحث عن دروس حول تعليم البرمجة للاطفال مجانا ونحن في جي كودرس في طبيعة الحال نحاول ان نوفر لكم دائما احدث الشروحات حول مجال تطوير تطبيقات الموبايل لكي تستطيع بناء تطبيقك بواسطة برنامج اندرويد ستوديو بسهوله وبدون اي تعقيد حيث بعد تعلمك لهذة المهاره يمكنك التقديم الى اي شركة تطوير تطبيقات الجوال للعمل فيها واكتساب خبره اكبر وتعلم مهارة العمل ضمن فريق ولكن قبل البدء في تطوير تطبيقات الاندرويد يجب عليك آخذ دورة جافا لان لغة جافا من اهم اللغات التي ينصح البدء بها في مجال تطوير تطبيقات الموبايل ونقدم لكم موقعنا المتواضع حول اكواد لغة جافا تساعدك في التطوير في اللغه .


من اكثر الوظائف التي تطلب في الوقت الحالي وهيبرمجة تطبيقات سطح المكتب و تطوير تطبيقات الموبايل سواء تطوير تطبيقات الاندرويد او تطبيقات الايفون ios فمجال التطوير عموما واحد من اكثر المجالات التي لديها تناسف كبير في سوق العمل وكل شركة تطوير تطبيقات الجوال تسعى الى يكون العاملين فيها قادرين على تطوير اي تطبيقات مع الحفاظ على clean code وهذا ما يميز كل مطور عن الاخر فالامر لا يقتصر فقط على تطوير تطبيقات الهواتف الذكية بل يجب عليك مراعاة كتابة " كود نظيف " يسهل لمن ياتي بعدك التعديل واذا كنت تعمل ضمن فريق من اجل تطوير تطبيقات الاندرويد فكل واحد يعرف يترك عمله نظيف لكي يسهل على الاخر الوصول الى المعلومه التي يحتاجها وليعرف كل شخص ساعد في تطور التطبيق الوصول الى ما يحتاج .


كيفية عرض PDF view داخل برنامج اندرويد ستوديو وعمل RecyclerView لعرض اكثر من pdf .


قم اولا باضافة المكتبة التالية داخل build.gradle


dependencies {
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
}


ثم بعد ذلك قم بإنشاء class activity جديد لكي نصمم فيها تصميم الpdf وسوف نقوم بعمل recyclerview لكي نقوم بعرض اكثر من ملف pdf , هنا قمنا بإنشاء اكتفتي باسم ShowMathActivity لكي اقوم بعرض ملفات pdf الخاص بالرياضيات هنا وقم بكتابة الكود التالي داخلها .


<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />


صورة التصميم النهائي 



قم الان بإنساء assets folder وبداخله سوف تضع ملفات pdf الخاصه بك ولكن تذكر ان الاسماء تكون بالانجليزي وتكون smallchar اي حروف صغيره وايضا لا تضع مساحة في اسم الpdf يكفيك ان تضع _ , كل ما عليك التوجة الى java والنقر كلك يمين ومن ثم اختيار new بعدها folder ومنها assets وبعدها سوف يتم انشاء لك فولدر لرفع به ملفات pdf الخاصه بك .



الان بعد رفع ملفات pdf التي تريد عرضها قم بعمل Data class وقم بعمل String text لكي نقوم بتغيير النص فقط وبعدها getter and setter ans constructor او يمكنك نسخ الكود التالي .



الكود السابق .


public class Data {
    String text;

    public Data(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}


قم بإنشاء انترفيس interface باسم Onclicker وقم بعمل بداخلة  void onClick(int position); فقط ثم اغلقه .



قم الان بإنشاء adpterRV class حيث سيكون هذا هو الادبتر المسؤول عن عرض الrecyclerview و سوف نقوم بعمل onclick item له . طريقة RecyclerView قد سبق وان شرحناها من قبل لذلك اختصارا للوقت قم بالرجوع الى المقالة الخاصه بها لتفهمها بشكل اكبر كل مافي الامر اننا سوف نضيف holder.listView.setOnClickListener و يمكنك نسخ الكود التالي .



الكود الموجود بالصورة السابقه . 


public class adpterRV extends RecyclerView.Adapter<adpterRV.Holder> {
    ArrayList<Data> personal;
    Context context;
    Onclicker onclicker;

    public adpterRV(ArrayList<Data> personal, Context context, Onclicker onclicker) {
        this.personal = personal;
        this.context = context;
        this.onclicker = onclicker;
    }



class Holder extends RecyclerView.ViewHolder {
MaterialButton listView;
TextView textView;

public Holder(@NonNull View itemView) {
super(itemView);
listView = itemView.findViewById(R.id.list);
textView = itemView.findViewById(R.id.view);
        }
    }

@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.recycler, parent, false);
return new Holder(view);
    }

@SuppressLint("ResourceAsColor")
@Override
public void onBindViewHolder(@NonNull final Holder holder, final int position) {
final Data person = personal.get(position);
holder.listView.setText(person.getText());

holder.listView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onclicker.onClick(position);
            }
        });
    }

@Override
public int getItemCount() {
return personal.size();
    }
}


الان ارجع الى MainActivity او الكلاس الذي تريد ظهور RV بداخلة حيث سوف تكون هذة RecyclerView عباره عن زر به نص بالملف pdf الذي سوف ينتقل اليه كما بالصورة الموجوده في اخر هذة المقالة , قم بتعريف Recyclerview و adpter  وسوف نزيد جزء بسيط , وهو ان تتوجة الى اسم class وفي نهايته قم بعمل implements Onclicker وسوف يطلب منك عمل onClick وافق على العملية وسوف نقوم بعمل putExtra بداخله لكي نرسل بيانات وما سوف نرسله اننا سنجعل المستخدم ينتقل من هذة الاكتفتي الى الاكتفتي الخاصه باسم ShowMathActivity التي قمنا بعملها في اول هذة المقالة .


وسوف نقوم بعمل المفتاح key وهو geecoders وهذا ما سوف نقوم بالارسال والاستقبال من خلاله وسوف نرسل الموقع position لكي يرسل المستخدم للمكان المطلوب ويمكنك نسخ الكود التالي ولكن هذا الكود قد تم تنفيذة على Fragment يمكنك فقط استبدال requireActivity بي this اذا كنت ستعمل في Activity .



الكود الموجود بالصورة . 


RecyclerView recyclerView;
adpterRV personAdapterr;
ArrayList<Data> per = new ArrayList<>();
Button mathimatex1;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_blank1, container, false);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView =view.findViewById(R.id.recler_eqtnasa);
mathimatex1=view.findViewById(R.id.mathimatix22);
personAdapterr = new adpterRV(per, requireContext(),this);
recyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));

per.add(new Data("شابتر 1"));
per.add(new Data("تكمله شابتر 1"));
per.add(new Data("شابتر 2"));
per.add(new Data("تكمله شابتر 2"));
per.add(new Data("شابتر 3"));
per.add(new Data("تكمله شابتر3"));
per.add(new Data("تكمله شابتر4"));
per.add(new Data("تكمله شابتر4"));
recyclerView.setAdapter(personAdapterr);

mathimatex1.setOnClickListener(v -> {
Intent i = new Intent(requireActivity(), ShowMathActivity.class);
i.putExtra("geecoders", 555);
startActivity(i);
        });
    }

    @Override
    public void onClick(int position) {
        Intent i = new Intent(requireActivity(), ShowMathActivity.class);
        i.putExtra("geecoders",position);
        startActivity(i);
    }
    


اخيرا انتقل الى ShowMathActivity لكي نستقبل البيانات وايضا نعرض المطلوب لذلك قم بعمل int getter وبعدها getIntent().getIntExtra لكي نستقبل البيانات واكتب المفتاح الذي ارسلنا به وهو كان geecoders وضع الـ request 0 او اي قيمة وبعدها ذلك قم بعمل if للاختبار


اذا قام بالنقر على الزر الاول وهو 0 سيتم عرض ch1_toroq واذا قان بالنقر على ثاني زر وهو باسم 1 سيتم عرض ch11_toroq وهكذا كل زر ينقر عليه سوف يعرض بيانات معينه .



الكود السابق الموجودة في الصورة . 6159861


public class ShowMathActivity extends AppCompatActivity {
PDFView pdfView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_math);
pdfView=findViewById(R.id.pdfview);

int getter = getIntent().getIntExtra("geecoders",0);

 if (getter == 0) {
     pdfView.fromAsset("ch1_toroq.pdf").load();

 }

 if (getter == 1) {
     pdfView.fromAsset("ch11_toroq.pdf").load();
 }

 if (getter == 2) {
     pdfView.fromAsset("ch2_toroq.pdf").load();

 } if (getter == 3) {
     pdfView.fromAsset("ch22_toroq.pdf").load();

 } if (getter == 4) {
     pdfView.fromAsset("ch1_toroq.pdf").load();

 } if (getter == 5) {
    pdfView.fromAsset("ch1_toroq.pdf").load();

 } if (getter == 6) {
     pdfView.fromAsset("ch1_toroq.pdf").load();

 } if (getter == 7) {
     pdfView.fromAsset("ch1_toroq.pdf").load();

 }if (getter == 555) {
     pdfView.fromAsset("sec_toroq.pdf").load();
 }

    }
}


صورة لشكل التطبيق الخاص بعرض PDF . 



شاهد ايضا :-


google console play console android android studio mac android studio krita android


تعليقات