Post

Class 256 & 257- একটি পূর্ণাঙ্গ অ্যান্ড্রয়েড অ্যাপ তৈরি করা - JSON পার্সিং এবং ListView ব্যবহার করে

Class 256 & 257- একটি পূর্ণাঙ্গ অ্যান্ড্রয়েড অ্যাপ তৈরি করা - JSON পার্সিং এবং ListView ব্যবহার করে

আজকে আমরা একটি পূর্ণাঙ্গ অ্যান্ড্রয়েড অ্যাপ তৈরি করব, যেখানে আমরা সার্ভার থেকে JSON ডেটা পার্স করব এবং সেই ডেটা দিয়ে একটি ListView তৈরি করব। আমরা ArrayList, HashMap, JSONArray, এবং JSONObject ব্যবহার করব। এছাড়াও আমরা Volley লাইব্রেরি ব্যবহার করে ডেটা ফেচ করব। সবকিছু বাংলায় ব্যাখ্যা করা হবে এবং কোডের উদাহরণ দেওয়া হবে।


প্রথমে আমাদের JSON ডেটা দেখে নেই:

1
2
3
4
{
    "videoTitle": "Add Demo Title 1",
    "videoID": "12345"
}

এই JSON ডেটা আমরা সার্ভার থেকে পাব। এখানে দুটি কী আছে: videoTitle এবং videoID। আমাদের কাজ হল এই ডেটা পার্স করে একটি ListView-এ দেখানো।


ধাপ ১: প্রজেক্ট সেটআপ

প্রথমে Android Studio ওপেন করে একটি নতুন প্রজেক্ট তৈরি করুন। প্রজেক্টের নাম দিন JSONParsingApp


ধাপ ২: Gradle ফাইলে Volley লাইব্রেরি যোগ করা

Volley লাইব্রেরি ব্যবহার করে আমরা সার্ভার থেকে ডেটা ফেচ করব। এজন্য build.gradle ফাইলে নিচের লাইনটি যোগ করুন:

1
implementation 'com.android.volley:volley:1.2.1'

এরপর Sync Now করুন।


ধাপ ৩: লেআউট ফাইল তৈরি করা (activity_main.xml)

এখন আমরা activity_main.xml ফাইলে একটি ListView যোগ করব।

1
2
3
4
5
6
7
8
9
10
11
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

ধাপ ৪: কাস্টম লেআউট তৈরি করা (list_item.xml)

এখন আমরা একটি কাস্টম লেআউট তৈরি করব, যা ListView-এর প্রতিটি আইটেমের জন্য ব্যবহার করা হবে। এটি দেখতে এমন হবে:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:id="@+id/titleTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/idTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ID"
        android:textSize="14sp" />
</LinearLayout>

ধাপ ৫: BaseAdapter তৈরি করা (CustomAdapter.java)

এখন আমরা একটি BaseAdapter তৈরি করব, যা ListView-এ ডেটা দেখানোর জন্য ব্যবহার করা হবে।

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

public class CustomAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<HashMap<String, String>> dataList;

    public CustomAdapter(Context context, ArrayList<HashMap<String, String>> dataList) {
        this.context = context;
        this.dataList = dataList;
    }

    @Override
    public int getCount() {
        return dataList.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_item, null);
        }

        TextView titleTextView = convertView.findViewById(R.id.titleTextView);
        TextView idTextView = convertView.findViewById(R.id.idTextView);

        HashMap<String, String> data = dataList.get(position);
        titleTextView.setText(data.get("videoTitle"));
        idTextView.setText(data.get("videoID"));

        return convertView;
    }
}

ধাপ ৬: MainActivity.java তে কোড লেখা

এখন আমরা MainActivity.java ফাইলে কোড লিখব। এখানে আমরা Volley ব্যবহার করে সার্ভার থেকে ডেটা ফেচ করব এবং ListView-এ দেখাব।

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private ArrayList<HashMap<String, String>> dataList;
    private CustomAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.listView);
        dataList = new ArrayList<>();
        adapter = new CustomAdapter(this, dataList);
        listView.setAdapter(adapter);

        fetchDataFromServer();
    }

    private void fetchDataFromServer() {
        String url = "https://example.com/api/videos"; // আপনার API URL দিন

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            for (int i = 0; i < response.length(); i++) {
                                JSONObject jsonObject = response.getJSONObject(i);

                                String videoTitle = jsonObject.getString("videoTitle");
                                String videoID = jsonObject.getString("videoID");

                                HashMap<String, String> map = new HashMap<>();
                                map.put("videoTitle", videoTitle);
                                map.put("videoID", videoID);

                                dataList.add(map);
                            }
                            adapter.notifyDataSetChanged();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this, "Error: " + error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(jsonArrayRequest);
    }
}

ধাপ ৭: অ্যাপ রান করা

এখন আপনার অ্যাপ রান করুন। সার্ভার থেকে ডেটা ফেচ হবে এবং ListView-এ দেখানো হবে।


শেষ কথা

আজকের টিউটোরিয়ালে আমরা দেখেছি কিভাবে সার্ভার থেকে JSON ডেটা ফেচ করে ListView-এ দেখানো যায়। এখানে আমরা ArrayList, HashMap, JSONArray, JSONObject, এবং Volley লাইব্রেরি ব্যবহার করেছি। আশা করি টিউটোরিয়ালটি আপনার কাজে লাগবে। যদি কোন প্রশ্ন থাকে, তাহলে কমেন্ট করুন।

Class 258_1: Complex JSON Parsing (Part 1) & Class 258_2: Complex JSON Parsing (Part 2) এই দুইটি ক্লাস প্র্যাকটিক্যালভাবে কাজ করতে হবে।