2011-11-02 11 views
36

मैं the ListView API पर looke और मैं विधि देखा:सूची दृश्य का उपयोग करना: हेडर व्यू कैसे जोड़ें?

addHeaderView (देखें v)

मुझे क्या करना चाहते हैं सूची के ऊपर एक लेआउट है, यह संभव है?

मैं की तरह कुछ कर रही करने की कोशिश की:

EditText et=new EditText(this); 
    et.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT)); 
    et.setInputType(InputType.TYPE_CLASS_TEXT); 
    addHeaderView(et); //makes app crash 

मैं भी

setContentView(R.layout.tryview); 

की कोशिश की लेकिन यह भी ऐप्लिकेशन क्रैश हो।

सहायता बहुत सराहना की है!

संपादित: इस वर्ग के लिए कोड है:

public class GroupsActivity extends ListActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String your_array_contents[] = {"a","ab","c"}; 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.groups_layout, your_array_contents)); 
    EditText et=new EditText(this); 
    et.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    et.setInputType(InputType.TYPE_CLASS_TEXT); 

    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

    lv.setAdapter(new ArrayAdapter<String>(GroupsActivity.this, 
    android.R.layout.simple_list_item_multiple_choice, your_array_contents)); 
    lv.addHeaderView(et); //makes app crash 
    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     // When clicked, show a toast with the TextView text 
    // Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      //Toast.LENGTH_SHORT).show(); 
    } 
    }); 
} 


} 
+0

पोस्ट क्रैश लॉग टूट गया है। –

+0

मेरा जवाब देखें। आशा है इससे आपकी मदद होगी। मेरे उत्तर में उल्लिखित लिंक का भी उल्लेख करें। – user370305

+0

@ user370305 - अपने उत्तर पर मेरी टिप्पणी देखें – Belgi

उत्तर

28

आप बस ListView का एक हैडर के रूप में देखें उपयोग नहीं कर सकते।

क्योंकि जो दृश्य पारित किया जा रहा है उसे फुलाया जाना है।

अधिक जानकारी के लिए Android ListView addHeaderView() nullPointerException for predefined Views पर मेरा उत्तर देखें।

संपादित करें: इस ट्यूटोरियल Android ListView and ListActivity - Tutorial पर

देखो।

संपादित 2: यह लिंक Android ListActivity with a header or footer

+0

मैंने व्यू हेडर = (देखें) getLayoutInflater() को जोड़ने का प्रयास किया। Inflate (R.layout.headerView, null); ls.addHeaderView (शीर्षलेख); लेकिन यह दुर्घटनाग्रस्त हो जाता है। (मैं लाइन \t lv.setAdapter (नई ArrayAdapter (GroupsActivity.this के बाद यह कहा, \t \t android.R.layout.simple_list_item_multiple_choice, your_array_contents));) – Belgi

+12

Android संस्करण 4.4 इससे पहले कि आप setAdapter विधि के बाद addHeaderView उपयोग नहीं कर सकते । – DcodeChef

+0

लिंक संपादित करें 2, त्रुटि 404 देता है, इसलिए इसे हटाएं या लिंक को ठीक करने की सराहना की जाएगी। –

63

आप के रूप में कई हेडर के रूप में आप बुला addHeaderView() कई बार द्वारा पसंद जोड़ सकते हैं। एडाप्टर को सूची दृश्य में सेट करने से पहले आपको इसे करना होगा।

और हाँ अगर आप इस तरह की तरह हैडर कुछ जोड़ सकते हैं:

LayoutInflater inflater = getLayoutInflater(); 
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.header, myListView, false); 
myListView.addHeaderView(header, null, false); 
+0

यदि आप इसे जोड़ते हैं तो यह क्रैश नहीं होगा। इसलिए मुझे लगता है कि यह समस्या नहीं है। –

+1

@ यशवंत कुमार यह एंड्रॉइड दस्तावेज़ के अनुसार है: http://goo.gl/AWU4K, सावधानी से नोट अनुभाग पढ़ें :) –

+1

सच है, मैंने अभी कहा है, यह क्रैश नहीं करेगा, यह हेडर व्यू नहीं दिखाएगा। –

संबंधित मुद्दे