ListView में पाद लेख कैसे जोड़ें?


88

मैं एक एप्लिकेशन विकसित कर रहा हूं, अपने आवेदन में, मैं डोम पार्सिंग का उपयोग करके डेटा प्रदर्शित करने के लिए Listview का उपयोग कर रहा हूं, मैं सूची दृश्य में पाद करना चाहता हूं, जब मैं दृश्य देखने के लिए पाद अतिरिक्त अतिरिक्त डेटा जोड़ें क्लिक करता हूं, तो मैंने छवि संलग्न की, मुझे वह डिज़ाइन पसंद आएगा प्रक्रिया, कृपया image1 और imgae2 का उल्लेख करें। मैं लाल आयत में पाद लेख का उल्लेख करता हूं

Fig1-Footer जैसे "अधिक समाचार"
वैकल्पिक शब्द

वैकल्पिक शब्द

Fig2-listview में अतिरिक्त 10 रिकॉर्ड जोड़ें

जवाबों:


205

पाठ से मिलकर एक पाद दृश्य लेआउट बनाएं जिसे आप पाद लेख के रूप में सेट करना चाहते हैं और फिर प्रयास करें

View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);

पाद लेख के लिए लेआउट कुछ इस तरह हो सकता है:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="7dip"
    android:paddingBottom="7dip"
    android:orientation="horizontal"
    android:gravity="center">

    <LinearLayout 
        android:id="@+id/footer_layout" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_gravity="center">

    <TextView 
        android:text="@string/footer_text_1" 
        android:id="@+id/footer_1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="14dip" 
        android:textStyle="bold" 
        android:layout_marginRight="5dip" />
    </LinearLayout>
</LinearLayout> 

गतिविधि वर्ग हो सकता है:

public class MyListActivty extends ListActivity {
    private Context context = null;
    private ListView list = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        list = (ListView)findViewById(android.R.id.list);

        //code to set adapter to populate list
        View footerView =  ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
        list.addFooterView(footerView);
    }
}

7
यह अच्छा है, लेकिन क्या होगा अगर आप चाहते हैं कि पाद स्क्रीन पर FIXED हो, बल्कि केवल नीचे दिखाई देने पर दिखाई दे? और अगर आप चाहते हैं कि सूची EMPTY होने पर भी पाद दिखाई दे? पर पूर्ण प्रश्न देखें stackoverflow.com/questions/12353701/...
gcl1 14

33
मुझे इस कोड को काम करने में कुछ समस्याएं हुईं और उन्हें हल किया। यहाँ क्या AddFooterView () प्रलेखन NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that will also account for header and footer views.
अवस्था

13
@ gcl1 उस मामले में जो पाद लेख नहीं है, आपके लेआउट में बस एक सामान्य तत्व है जो सूची दृश्य के नीचे है। बस, आप जानते हैं, इसे सूची के नीचे रखें?
15:12

2
सिर्फ @demonsten के लिए चिल्लाएँ: यदि आप सेटअडैप्टर () को देखने से पहले कहते हैं, तो आपके पास एक बुरा समय आने वाला है।
बेन ओगोरक

1
यदि एडॉप्टर में कोई डेटा नहीं है तो फ़ूटर संलग्न नहीं हो रहा है (दिखा रहा है)। अतः एडेप्टर में कोई डेटा न होने पर भी हम फुटर कैसे प्रदर्शित कर सकते हैं? धन्यवाद
कल्पेश लखानी

10

यहाँ उत्तर थोड़े पुराने हैं। हालाँकि कोड समान रहता है, लेकिन व्यवहार में कुछ बदलाव होते हैं।

public class MyListActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
        getListView().addFooterView(footerView);
        setListAdapter(new ArrayAdapter<String>(this, getResources().getStringArray(R.array.news)));
    }
}

addFooterView()विधि के बारे में जानकारी

सूची के निचले भाग में दिखाई देने के लिए एक निश्चित दृश्य जोड़ें। यदि addFooterView()एक से अधिक बार कॉल किया जाता है, तो दृश्य उसी क्रम में दिखाई देंगे, जिस क्रम में उन्हें जोड़ा गया था। इस कॉल का उपयोग करके जोड़े गए दृश्य ध्यान केंद्रित कर सकते हैं यदि वे चाहें।

ऊपर दिए गए अधिकांश उत्तर बहुत महत्वपूर्ण बिंदु हैं -

addFooterView()कॉल करने से पहले कॉल किया जाना चाहिए setAdapter()। यह इतना है कि ListView एक के साथ आपूर्ति किए गए कर्सर को लपेट सकता है जो हेडर और पाद दृश्य के लिए भी खाता होगा।

किटकैट से यह बदल गया है।

नोट: जब पहली बार पेश किया गया था, तो यह विधि केवल एडॉप्टर (ListAdapter) के साथ एडेप्टर सेट करने से पहले कॉल की जा सकती थी। KITKAT से शुरू करते हुए, इस विधि को किसी भी समय कहा जा सकता है। यदि ListView का एडाप्टर HeaderViewListAdapter को विस्तारित नहीं करता है, तो इसे WrapperListAdapter के सहायक उदाहरण के साथ लपेटा जाएगा।

प्रलेखन


9

मुझे पता है कि यह एक बहुत पुराना प्रश्न है, लेकिन मैंने अपने तरीके से यहां जाना और उत्तर पाया कि 100% संतोषजनक नहीं है, क्योंकि जैसा कि gcl1 ने उल्लेख किया है - इस तरह पाद वास्तव में स्क्रीन के लिए पाद नहीं है - यह सिर्फ एक "ऐड-ऑन" है “सूची में।

नीचे पंक्ति - उन अन्य लोगों के लिए जो अपने तरीके से यहां Google कर सकते हैं - मुझे यहां निम्नलिखित सुझाव मिला: ListFragment के नीचे निश्चित और हमेशा दृश्यमान पाद

निम्नानुसार करने की कोशिश करें, जहां जोर एक्सएमएल में पहले सूचीबद्ध बटन (या किसी पाद लेख तत्व) पर है - और फिर सूची को "लेआउट_अब" के रूप में जोड़ा गया है:

<RelativeLayout>

<Button android:id="@+id/footer" android:layout_alignParentBottom="true"/> 
<ListView android:id="@android:id/list" **android:layout_above**="@id/footer"> <!-- the list -->

</RelativeLayout>

6

यदि सूची दृश्य सूचीबद्धता का एक बच्चा है:

getListView().addFooterView(
    getLayoutInflater().inflate(R.layout.footer_view, null)
);

(अंदर पर बनाएँ) ()


2

वह गतिविधि जिसमें आप सूची पाद लेख जोड़ना चाहते हैं और मैंने सूची दृश्य पाद लेख पर एक घटना भी उत्पन्न की है।

  public class MainActivity extends Activity
{

        @Override
        protected void onCreate(Bundle savedInstanceState)
         {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ListView  list_of_f = (ListView) findViewById(R.id.list_of_f);

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

            View view = inflater.inflate(R.layout.web_view, null);  // i have open a webview on the listview footer

            RelativeLayout  layoutFooter = (RelativeLayout) view.findViewById(R.id.layoutFooter);

            list_of_f.addFooterView(view);

        }

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg" >

    <ImageView
        android:id="@+id/dept_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/dept_nav" />

    <ListView
        android:id="@+id/list_of_f"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/dept_nav"
        android:layout_margin="5dp"
        android:layout_marginTop="10dp"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:listSelector="@android:color/transparent" >
    </ListView>

</RelativeLayout>

0

इस सवाल में, मेरे लिए सबसे अच्छा जवाब काम नहीं करता है। उसके बाद मुझे श्रुत पाद लेख दिखाने के लिए यह विधि मिली,

LayoutInflater inflater = getLayoutInflater();
ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false);
listView.addFooterView(footerView, null, false);

और नया लेआउट कॉल footer_layout बनाएं

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Done"
        android:textStyle="italic"
        android:background="#d6cf55"
        android:padding="10dp"/>
</LinearLayout>

काम नहीं, तो इस लेख का उल्लेख सुना


0

आप एक स्टैकलैटआउट का उपयोग कर सकते हैं, इस लेआउट के अंदर आप एक सूची डाल सकते हैं, उदाहरण के लिए:

<StackLayout VerticalOptions="FillAndExpand">
            <ListView  ItemsSource="{Binding YourList}"
                       CachingStrategy="RecycleElement"
                       HasUnevenRows="True">

                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell >
                            <StackLayout  Orientation="Horizontal">
                                <Label Text="{Binding Image, Mode=TwoWay}" />

                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
            <Frame BackgroundColor="AliceBlue" HorizontalOptions="FillAndExpand">
                <Button Text="More"></Button>
            </Frame>
        </StackLayout>

यह परिणाम है:

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.