Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में ListView को ScrollView में बिना ढहे कैसे डालें?

Android में ScrollView के अंदर ListView को सही ऊंचाई के साथ दिखाने का गाइड

यह ट्यूटोरियल दिखाता है कि कैसे ListView को ScrollView के अंदर रखकर उसके सभी आइटम दिखाए जाएं, क्योंकि डिफ़ॉल्ट रूप से ListView ScrollView में संकुचित (collapse) हो जाता है।

समस्या

ListView और ScrollView दोनों स्क्रॉल करने योग्य हैं। ScrollView ListView को माप नहीं पाता, इसलिए ListView की ऊंचाई 0 या एक आइटम तक सीमित हो जाती है।

समाधान: Helper क्लास से ListView की ऊंचाई सेट करें

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनकर नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल में कोड जोड़ें

res/layout/activity_main.xml में:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="19dp"
            android:text="hello_world" />
        <ListView
            android:id="@+id/listView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>
</ScrollView>

चरण 3: MainActivity.java

package com.example.sample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {
    private String listview_array[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN" };
    ListView myList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myList = findViewById(R.id.listView);
        myList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listview_array));
        Helper.getListViewSize(myList);
    }
}

चरण 4: Helper.java क्लास

package com.example.sample;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;

public class Helper {
    public static void getListViewSize(ListView myListView) {
        ListAdapter myListAdapter = myListView.getAdapter();
        if (myListAdapter == null) { return; }
        int totalHeight = 0;
        for (int size = 0; size < myListAdapter.getCount(); size++) {
            View listItem = myListAdapter.getView(size, null, myListView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = myListView.getLayoutParams();
        params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1));
        myListView.setLayoutParams(params);
        Log.i("height of listItem:", String.valueOf(totalHeight));
    }
}

चरण 5: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

बेहतर आधुनिक विकल्प

नए ऐप्स के लिए NestedScrollView + RecyclerView उपयोग करें जिसमें setNestedScrollingEnabled(false) सेट हो, या पूरी तरह से RecyclerView में हेडर/फुटर जोड़ें (विभिन्न व्यू टाइप के साथ)।

ऐप चलाएं

डिवाइस कनेक्ट करें, Run आइकन पर क्लिक करें और ScrollView के अंदर पूरी ListView देखें।

  1. Android में ScrollView के अंत का पता कैसे लगाएं? Android में ScrollView के अंत का पता कैसे लगाएं?

    ScrollView स्क्रॉल अंत पहचान यह उदाहरण दर्शाता है कि ViewTreeObserver.OnScrollChangedListener का उपयोग करके ScrollView के शीर्ष या अंत तक पहुंचने का पता कैसे लगाएं। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में ScrollView और WebView (activity_main.xml) &l

  1. Android में ScrollView को प्रोग्रामेटिकली कैसे डिसेबल करें? Android में ScrollView को प्रोग्रामेटिकली कैसे डिसेबल करें?

    परिचय यह उदाहरण दर्शाता है कि Android में ScrollView को प्रोग्रामेटिक रूप से कैसे डिसेबल किया जाए। हम OnTouchListener का उपयोग करके टच इवेंट को इंटरसेप्ट करेंगे। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project के माध्यम से नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML में ScrollView res/l

  1. अपने Android डिवाइस को सुरक्षित रूप से रूट करें – PC की आवश्यकता नहीं अपने Android डिवाइस को सुरक्षित रूप से रूट करें – PC की आवश्यकता नहीं

    Android डिवाइस को रूट करना शुरुआती और शौकीनों के लिए एक डराने वाला काम हो सकता है। इसमें शामिल जोखिमों के कारण, लोग अक्सर अपने Android स्मार्टफोन को रूट करने से हिचकिचाते हैं। शुरुआत के लिए, रूट करने के बाद आप किसी भी वारंटी दावे को खो देंगे, और अगर प्रक्रिया में कुछ गलत होता है, तो आपका फ़ोन स्थाय