2012-02-21 16 views
5

की बदलती संख्या पिछले पृष्ठ पर किसी बटन पर क्लिक करने के बाद आप किसी नए पृष्ठ पर स्लाइड करने की क्षमता को अनलॉक कैसे करते हैं?ViewPager

वर्तमान में मेरे पास एक पेजर एडाप्टर है। नीचे दिया गया कोड आइटम को तुरंत चालू करता है। GetCount() के भीतर, 3 का मान वापस कर दिया जाता है और इस प्रकार 3 स्लाइड्स बनाई जाती हैं। मैं सोच रहा था कि क्या केवल 3 विचारों का कोई तरीका था, लेकिन एक बटन पर क्लिक करने के बाद, चौथा दृश्य अनलॉक करें जिसे आप अब स्लाइड कर सकते हैं?

public int getCount() { 
     return 3; 
    } 
एक जैसा

"setCount()" और उसके बाद स्लाइड की राशि में वृद्धि करने के लिए // * कुछ * // कोड में यह जगह:

@Override 
    public Object instantiateItem(final View collection, int position) { 
     final LayoutInflater inflater = (LayoutInflater) TViewPager.this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     TextView tv = new TextView(TViewPager.this); 

//Describe the separate layouts of views 
switch (position) { 
     case 1: 
      View v1 = inflater.inflate(R.layout.expander2, null, false); 
       ((ViewPager) collection).addView(v1, 0); 
       final Button button = (Button) findViewById(R.id.button_click_me); 
       button.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v1) { 
         Toast.makeText(getBaseContext(), "+1", Toast.LENGTH_LONG).show(); 
         //*Some code*// 

        } 
       }); 
       return v1; 

वहाँ बदलने के लिए एक तरीका है?

चाहेंगे जोड़ने

instantiateItem(collection,4); 

काम कहीं काम करते हैं?

धन्यवाद,

उत्तर

6

यहां बताया गया है कि मैंने इस समस्या को कैसे हल किया। स्पष्टीकरण के लिए, आप एक बटन पर क्लिक कैसे करते हैं और अधिक पेज प्राप्त करते हैं जिन्हें आप स्क्रॉल कर सकते हैं। मैंने बनाया:

private int NUM_VIEWS = 2; 

public void setN(int N) { 
    this.NUM_VIEWS = N; 
} 

और फिर मैंने एक महत्वपूर्ण रेखा बदल दी।

@Override 
public int getCount() { 
    return NUM_VIEWS; 
} 

मेरे clickListener

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v1) { 
     myAdapter.setN(3); 
     myPager.setCurrentItem(2); 
     } 
}); 

मैं नया आइटम की सुविधा के लिए एक अन्य मामले जोड़ा है। बाद में जब मैं बटन पर क्लिक करता हूं, तो मेरा पेजडैप्टर 2 के बजाय 3 दृश्यों तक विस्तारित होगा और नया केस नया दृश्य होगा।

2

getCount डिफ़ॉल्ट रूप से अपने ViewPager के बच्चे को देखे जाने की संख्या दिखाता है। pager.add(layout_item) करके आप पेजर में एक नया आइटम जोड़ सकते हैं (बेशक आपको इसे कहीं पहले फुला देना होगा)। getCount स्वचालित रूप से समायोजित हो जाएगा।

+0

इसलिए मैंने जोड़ने की कोशिश की: ((ViewPager) संग्रह) .addView (v1, 3); क्लिक श्रोता के भीतर लेकिन यह काम नहीं किया है। क्या आप इसे कैसे करें इस पर थोड़ा और सलाह दे सकते हैं? –

+0

क्या आपने 'NotifyDatasetChanged()' –

+0

किया था मैंने कोशिश की लेकिन यह दुर्घटनाग्रस्त हो गया। क्या मैं ((ViewPager) संग्रह करता हूं) .notifyDatasetChanged() सभी क्लिक श्रोता के भीतर। यह भी जोड़ या जोड़ है और इन तरीकों से कौन सा ऑब्जेक्ट संबंधित है, संग्रह? –