<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Adapters & ViewHolder in Android in Hindi
Android में Adapters का उपयोग ListView, GridView, RecyclerView जैसे UI Components में Data Binding के लिए किया जाता है। Adapters डेटा को Convert करके View में Show करते हैं।
What is an Adapter? - Adapter क्या है?
- Adapter एक Bridge की तरह काम करता है, जो Data Source (Array, Database, API) को UI Components (ListView, RecyclerView, etc.) से जोड़ता है।
- यह डेटा को Dynamically Load & Manage करता है।
- Android में BaseAdapter, ArrayAdapter, CursorAdapter, RecyclerView.Adapter आदि प्रमुख Adapters हैं।
- ListView और GridView के लिए ArrayAdapter/BaseAdapter, जबकि RecyclerView के लिए RecyclerView.Adapter उपयोग किया जाता है।
Types of Adapter - Adapter के प्रकार
1. BaseAdapter (Custom Adapter for Complex UI)
- BaseAdapter का उपयोग तब किया जाता है जब हमें Custom ListView/GridView बनानी हो।
- यह Adapter Multiple Views और Custom Layouts को Support करता है।
- हमें इसे Manually Implement करना पड़ता है और getView() Method Override करना होता है।
Implementation of BaseAdapter
Step 1: Create a Custom XML Layout (list_item.xml)
Step 2: Create Custom Adapter (Java)
public class MyAdapter extends BaseAdapter {
private Context context;
private String[] data;
public MyAdapter(Context context, String[] data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() { return data.length; }
@Override
public Object getItem(int position) { return data[position]; }
@Override
public long getItemId(int position) { return position; }
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
}
TextView textView = convertView.findViewById(R.id.textView);
textView.setText(data[position]);
return convertView;
}
}
Step 3: Set Adapter in Activity
ListView listView = findViewById(R.id.listView);
String[] items = {"Item 1", "Item 2", "Item 3"};
listView.setAdapter(new MyAdapter(this, items));
2. ArrayAdapter (For Simple ListView/GridView)
- ArrayAdapter का उपयोग Simple Lists (Strings, Integers, etc.) के लिए किया जाता है।
- यह Default Layouts (e.g., android.R.layout.simple_list_item_1) को Support करता है।
- यह डेटा को Auto-Bind कर सकता है, इसलिए इसे कम कोडिंग की आवश्यकता होती है।
Implementation of ArrayAdapter (Short Code Example)
String[] items = {"Apple", "Banana", "Orange"};
ListView listView = findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
ViewHolder Pattern (Optimization in Adapters)
- ViewHolder UI Components को Efficiently Manage करने के लिए उपयोग किया जाता है।
- यह ListView/GridView में Scrolling Performance Improve करता है।
- यह Unnecessary findViewById() Calls को Reduce करता है।
- RecyclerView.Adapter में अनिवार्य रूप से उपयोग किया जाता है।
Implementation of ViewHolder in BaseAdapter
public class MyAdapter extends BaseAdapter {
private Context context;
private String[] data;
public MyAdapter(Context context, String[] data) {
this.context = context;
this.data = data;
}
static class ViewHolder {
TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.textView = convertView.findViewById(R.id.textView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(data[position]);
return convertView;
}
}
Request
अगर आपको यह article useful या interesting लगा हो, तो please इसे अपने dosto aur family ke साथ जरूर share करें। आपका एक छोटा सा कदम हमें और अच्छा content बनाने के लिए motivate करता है। Thank you!
ध्यान दें कि इस page पर आपको कुछ ads भी देखने को मिल सकते हैं। इसके लिए हम आपसे माफी चाहते हैं। हम इस content को तैयार करने में काफी मेहनत और time लगाते हैं, ताकि आपको valuable जानकारी मिल सके। इन्हीं ads की मदद से हम ये काम continue कर पाते हैं।
आपके support और understanding के लिए दिल से धन्यवाद।