কম্পিউটার

আপনার অ্যান্ড্রয়েড অ্যাপে কীভাবে একটি API ফেচার অন্তর্ভুক্ত করবেন

আপনি যদি একজন অ্যাপ ডেভেলপার হন, এমন সময় হতে পারে যখন আপনি আপনার ব্যবহারকারীদের সরবরাহ করার জন্য ডেটা আনার জন্য একটি ওয়েব API অন্তর্ভুক্ত করতে চান। এটি খুব কঠিন নয় এবং এটি XML বা JSON-এ করা যেতে পারে। তাই এই টিউটোরিয়ালে, আমরা আপনাকে দেখাব কিভাবে আপনার Android অ্যাপে একটি সাধারণ ওয়েব API ডেটা ফেচার তৈরি করতে হয়।

এই টিউটোরিয়ালের জন্য, আমরা XML এর পরিবর্তে JSON ব্যবহার করব।

JSON-এ কোড লেখা

প্রথমে নিম্নলিখিত কোড সহ একটি নতুন তালিকা দৃশ্য XML ফাইল তৈরি করুন:

 পরবর্তীতে একটি নতুন XML ফাইল তৈরি করুন , এবং এখানেই আপনি যে উপাদানগুলি দেখাতে চান তা তালিকাভুক্ত করবেন (ImageView, TextView, ইত্যাদি)

API থেকে ডেটা আনার জন্য, আমাদের মূল কার্যকলাপে যেতে হবে, এবং আমাদের AsyncTask ব্যবহার করতে হবে কারণ মূল থ্রেডে API আনা সম্ভব নয়। AsyncTask হল একটি থ্রেড যা UI-তে ফলাফল দেখানোর সময় ব্যাকগ্রাউন্ড প্রসেস করে। নেটওয়ার্ক প্রসেসের জন্য প্রধান থ্রেড ব্যবহার করলে সাধারণত আপনার অ্যাপ ক্র্যাশ হয়ে যাবে। যদি এটি একটু বিভ্রান্তিকর বলে মনে হয়, তাহলে RapidAPI-তে কিছু উচ্চ-গভীর API টিউটোরিয়াল দেখুন।

শ্রেণি DownloadFilesTask AsyncTask প্রসারিত করে {private final ProgressDialog dialog =new ProgressDialog(MainActivity.this);@Overrideprotected void onPreExecute(){super.onPreExecute();this.sign(sign) ...");this.dialog.show();}@Overrideprotected String doInBackground(Void...params){ServiceHandler sh =new ServiceHandler(); String jsonStr =sh.makeServiceCall("https://jsonplaceholder.typicode .com/albums/", ServiceHandler.GET);Log.d("res1", jsonStr); রিটার্ন jsonStr;}@Overrideprotected void onPostExecute(স্ট্রিং প্রতিক্রিয়া){super.onPostExecute(response);Log.d("res2" , সাড়া ); i++){JSONObject c =arr.getJSONObject(i); স্ট্রিং id=c.getString(ID); স্ট্রিং শিরোনাম =c.getString(TITLE); স্ট্রিং uid =c.getString(USER_ID);id_array.add(id );// Toast.makeText(getApplicationContext(), শিরোনাম, Toast.LENGTH_LONG).show();}বিজ্ঞাপন apter =নতুন AAdapter(MainActivity.this, id_array);l.setAdapter(adapter);}ক্যাচ (ব্যতিক্রম e){}}}}MainActivity.javapublic ক্লাস MainActivity প্রসারিত করে AppCompatActivity AdapterView.OnItemClickActivity প্রয়োগ করে; =নতুন ArrayList  ();ArrayList  Notice_array =new ArrayList  ();Button b1;ListView l;private final static String SERVICE_URI ="https://jsonplaceholder.typicode.com/albums/"; প্রাইভেট স্ট্যাটিক ফাইনাল স্ট্রিং TAG_QUESTIONS ="প্রশ্নগুলি";ব্যক্তিগত স্ট্যাটিক ফাইনাল স্ট্রিং USER_ID ="userId";private static final String ID ="id";private static final String TITLE ="title";JSONArray Questions =null;protected void onSaveBundleStance outState){super.onSaveInstanceState(outState);}সুরক্ষিত শূন্যতা onRestoreInstanceState(Bundle savedInstanceState){super.onRestoreInstanceState(savedInstanceState);}@Overrideprotected void onCreate(Bundle savedInstate){CounterState(CounterState); ty_main);l =(ListView) findViewById(R.id.list);নতুন DownloadFilesTask().execute();l.setOnItemClickListener(new AdapterView.OnItemClickListener(){@Overridepublic void onItemClick <(?> প্যারেন্ট, ভিউ ভিউ, int পজিশন, লং আইডি){স্ট্রিং abc =id_array.get(position);Toast.makeText(getBaseContext(), id_array.get(position), Toast.LENGTH_LONG).show();Intent n =নতুন অভিপ্রায়(MainActivity.this, Titleshow.class);n.putExtra("id", id_array.get(position));startActivity(n);}});}@Overridepublic void onItemClick(AdapterView  প্যারেন্ট, দেখুন ভিউ, int পজিশন, লং আইডি){}

আপনি আপনার প্রধান কার্যকলাপে প্রতিক্রিয়া পাবেন

ServiceHandler sh =new ServiceHandler();String jsonStr =sh.makeServiceCall("https://jsonplaceholder.typicode.com/albums/", ServiceHandler.GET); অনুরোধ করার এবং পেতে এটি একটি পরিষেবা হ্যান্ডেল ক্লাস ছাড়া আর কিছুই নয় ওয়েব এপিআই থেকে রেসপোজ করুন তাই আমরা ওয়েব api.ServiceHandler.javaclass ServiceHandler থেকে এই সব করব * পরিষেবা কল করা** @url - অনুরোধ করার জন্য url* @method - http অনুরোধ পদ্ধতি*/public String makeServiceCall(String url, int পদ্ধতি){রিটার্ন this.makeServiceCall(url, method, null);}/*** পরিষেবা কল করা ** @url - অনুরোধ করার জন্য url* @method - http অনুরোধ পদ্ধতি* @params - http অনুরোধ প্যারাম*/public স্ট্রিং makeServiceCall(স্ট্রিং url, int পদ্ধতি, তালিকা  params){try{// http clientDefaultHttpClient httpClient =new DefaultHttpClient();HttpEntity httpEntity =null;HttpResponse httpResponse =null;// HTTP অনুরোধ পদ্ধতি টাইপআইফ পরীক্ষা করা হচ্ছে (পদ্ধতি ==পোস্ট){HttpPost httpPost =new HttpPost(url);// পোস্ট paramsif যোগ করা (params !=null){httpPost.setEntity(new UrlEncodedFormEntity(params));}httpResponse =httpClient.execute(httpPost);} অন্যথায় (পদ্ধতি ==GET){// urlif-এ প্যারাম যোগ করা (params !=null){String paramString =URLEncodedUtils.format(params, "utf-8");url +="?" + paramString;}HttpGet httpGet =new HttpGet(url);httpResponse =httpClient.execute(httpGet);}httpEntity =httpResponse.getEntity();response =EntityUtils.toString(httpEntity);}ক্যাচ (অসমর্থিত এনকোডিং) {StracexEntrace).; 

আপনার asyncTask এর পরে, আপনি একটি অ্যাডাপ্টার ক্লাস পাবেন, যা অ্যাডাপ্টার পদ্ধতি সেট করবে, তবে এর জন্য আমাদের একটি কাস্টম অ্যাডাপ্টার তৈরি করতে হবে।

পাবলিক ক্লাস AAdapter BaseAdapter{ব্যক্তিগত কার্যকলাপ কার্যকলাপ;// ব্যক্তিগত ArrayList> data;private static ArrayList title;private static LayoutInflater inflater =null;public AAdapter(Activity a, Array) প্রসারিত করে =a;this.title =b;inflater =(LayoutInflater) কার্যকলাপ পাবলিক লং getItemId(int পজিশন){রিটার্ন পজিশন;}পাবলিক ভিউ getView(int position, view convertView, ViewGroup parent){View vi =convertView;if (convertView ==null) vi =inflater.inflate(R.layout.abcd, null);TextView title2 =(TextView) vi.findViewById(R.id.txt_ttlsm_row); // titleString গান =title.get(position).toString();title2.setText(song);TextView title22 =(TextView) vi.findViewById(R.id.txt_ttlcontact_row2); // NoticeString song2 =title.get(position).toString();title22.setText(song2);return vi;}}

আমাদের মনে রাখা দরকার যে অ্যাডাপ্টার ক্লাসটিকে অ্যান্ড্রয়েডে বিমূর্ত শ্রেণী হিসাবে বিবেচনা করা হয়, তাই আমাদের সমস্ত পদ্ধতি প্রয়োগ করতে হবে। নীচের কোডে, গেটভিউ পদ্ধতিটি গুরুত্বপূর্ণ, কারণ দ্বিতীয় XML ফাইলটি প্রদর্শন করতে আমরা সেখানে আরও কোড যোগ করব।

inflater =(LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

এবং আমাদের লোড ইমেজের জন্য একটি অ্যাডাপ্টার ক্লাসেরও প্রয়োজন হবে, যাতে API ফেচার ইন্টারনেট থেকে ছবি লোড করতে পারে।

পাবলিক ক্লাস MyAdapter বেসঅ্যাডাপ্টারকে প্রসারিত করে{ImageLoader imageLoader;private Context ctx;ArrayList  list;public MyAdapter(Context ctx, ArrayList  mDataList){list =mDataList;thictp=thictx;} ); ভিউ vi =convertView;ViewHolder viewHolder;if (convertView ==null){LayoutInflater vi =(LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);convertView =vi.inflate(R.layout.abcde), পুরাতন ভিউ =নতুন দেখুন ();viewHolder.imageView =(ImageView) convertView.findViewById(R.id.image);viewHolder.textView =(TextView) convertView.findViewById(R.id.txt_ttlsm_row);convertView.setTag(viewHolder);}অন্য{viewHolder =(ViewHolder) convertView.getTag();}AlbumData data =list.get(position);String a =data.getThumbnailUrl();if (data !=null){ viewHolder.textView.setText(data.getTitle());String url =a;Glide.with(ctx).load(url).centerCrop().placeholder(R.drawable.abhi).crossFade().into(viewHolder) .imageView);/* Picasso.with(ctx).load("https://preview.keenthemes.com/conquer/assets/plugins/jcrop/demos/demo_files/image2.jpg").into(viewHolder.imageView);*//* ImageLoader imageLoader =ImageLoader.getInstance();imageLoader.displayImage("https://www.keenthemes.com/preview/conquer/assets/plugins/jcrop/demos/demo_files/image1.jpg", ভিউহোল্ডার। imageView);*/}রিটার্ন কনভার্টভিউ;}পাবলিক ক্লাস ভিউহোল্ডার{ImageView imageView;TextView textView;}

আমরা একটি কোড মন্তব্য যোগ করেছি যা পিকাসো ইমেজ লোডারের জন্য সত্যিই একটি পরামর্শ, যা একটি শক্তিশালী ওপেন-সোর্স ইমেজ ডাউনলোডার এবং অ্যান্ড্রয়েডের জন্য ক্যাশিং লাইব্রেরি, এবং আপনার অ্যাপে একটি হালকা পদচিহ্ন রাখে। যাইহোক, আপনি আরও কাস্টমাইজেশনের জন্য গ্লাইড ইমেজ লোডার ব্যবহার করতে পারেন, কারণ এটি জিআইএফ সমর্থন এবং আরও ভাল মেমরি ব্যবস্থাপনা অফার করে৷

পাবলিক ক্লাস ভিউহোল্ডার{ImageView imageView;TextView textView;}

ভিউ হোল্ডার ক্লাস যা করে তা হল ভিউহোল্ডারের একটি স্ট্যাটিক ইনস্ট্যান্স তৈরি করে এবং তারপর প্রথম লোডের ভিউ আইটেমের সাথে এটি সংযুক্ত করে। তারপরে এটি ভবিষ্যতের কলগুলিতে ভিউ ট্যাগ থেকে পুনরুদ্ধার করা হবে।

getView() পদ্ধতিটিকে অনেক বলা হয় যেমন ListView এ অনেক উপাদান থাকে। তাই আমরা সেট এবং পাওয়ার পদ্ধতির জন্য একটি ডেটা মডেল ক্লাস বাস্তবায়ন করব, যা আপনাকে অ্যারে তালিকার উপাদান পেতে সাহায্য করবে এবং ভবিষ্যতে আপনার জীবনকে আরও সহজ করে তুলবে৷

পাবলিক ক্লাস অ্যালবামডাটা{int albumId;int id;String title;String url;String thumbnailUrl;public int getAlbumId(){return albumId;}পাবলিক void setAlbumId(int albumId){this.albumId =albumlicId;} ) (){return url;}public void setUrl(String url){this.url =url;}সর্বজনীন স্ট্রিং getThumbnailUrl(){return thumbnailUrl;}সর্বজনীন অকার্যকর সেটThumbnailUrl(স্ট্রিং thumbnailUrlUrl)= প্রাক> 

এটি আপনার এখনকার জন্য প্রয়োজনীয় সবকিছু। আপনি BlueStacks এর মত একটি অ্যাপ এমুলেটরে এই API ফেচারের আউটপুট পরীক্ষা করতে পারেন।


  1. অ্যান্ড্রয়েডে আপনার আইপি ঠিকানা কীভাবে লুকাবেন

  2. আপনার দেশে উপলব্ধ নয় এমন Android অ্যাপগুলি কীভাবে ডাউনলোড করবেন

  3. আপনার অ্যান্ড্রয়েড ফোনে Google অ্যাপ ক্র্যাশিং কীভাবে ঠিক করবেন?

  4. এন্ড্রয়েডে আপনার মূল্যবান ফটোগুলি কীভাবে লুকাবেন?