मैं ViewPager में सामग्री को अपडेट नहीं कर सकता।
FragmentPagerAdapter वर्ग में तत्काल तरीके () और getItem () के तरीकों का सही उपयोग क्या है?
मैं केवल getItem () का उपयोग अपने अंशों को त्वरित और वापस करने के लिए कर रहा था:
@Override
public Fragment getItem(int position) {
return new MyFragment(context, paramters);
}
इसने अच्छा काम किया। सिवाय मैं सामग्री को बदल नहीं सकता।
इसलिए मुझे यह मिला: ViewPager PagerAdapter दृश्य को अपडेट नहीं कर रहा है
"मेरा दृष्टिकोण तात्कालिकता () विधि में किसी भी तात्कालिक दृश्य के लिए सेटटैग () विधि का उपयोग करना है"
अब मैं InstantiateItem () को लागू करना चाहता हूं। लेकिन मुझे नहीं पता कि मुझे क्या लौटना है (प्रकार वस्तु है) और गेटआईएम (अंतर स्थिति) के साथ क्या संबंध है?
मैंने संदर्भ पढ़ा :
सार्वजनिक सार फ्रेगमेंट getItem (int स्थिति)
एक निर्दिष्ट स्थिति से जुड़े फ्रैगमेंट लौटें।
सार्वजनिक वस्तु InstantiateItem (ViewGroup कंटेनर, int स्थिति)
दिए गए पद के लिए पृष्ठ बनाएँ। एडेप्टर यहाँ दिए गए कंटेनर में दृश्य जोड़ने के लिए ज़िम्मेदार है, हालांकि यह केवल यह सुनिश्चित करना चाहिए कि यह उस समय तक किया जाता है जब यह फिनिश यूडेटड (व्यूग्रुप) से लौटता है। पैरामीटर
कंटेनर जिसमें व्यू दिखाई देगा जिसमें पेज दिखाया जाएगा। स्थिति पृष्ठ स्थिति को तत्काल किया जा सकता है।
रिटर्न
नए पृष्ठ का प्रतिनिधित्व करने वाली वस्तु देता है। इसके लिए व्यू होने की आवश्यकता नहीं है, लेकिन पेज के कुछ अन्य कंटेनर हो सकते हैं।
लेकिन मुझे अभी भी नहीं मिला।
यहाँ मेरा कोड है। मैं समर्थन पैकेज v4 का उपयोग कर रहा हूं।
ViewPagerTest
public class ViewPagerTest extends FragmentActivity {
private ViewPager pager;
private MyFragmentAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pager1);
pager = (ViewPager)findViewById(R.id.slider);
String[] data = {"page1", "page2", "page3", "page4", "page5", "page6"};
adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data);
pager.setAdapter(adapter);
((Button)findViewById(R.id.button)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
reload();
}
});
}
private void reload() {
String[] data = {"changed1", "changed2", "changed3", "changed4", "changed5", "changed6"};
//adapter = new MyFragmentAdapter(getSupportFragmentManager(), 6, this, data);
adapter.setData(data);
adapter.notifyDataSetChanged();
pager.invalidate();
//pager.setCurrentItem(0);
}
}
MyFragmentAdapter
class MyFragmentAdapter extends FragmentPagerAdapter {
private int slideCount;
private Context context;
private String[] data;
public MyFragmentAdapter(FragmentManager fm, int slideCount, Context context, String[] data) {
super(fm);
this.slideCount = slideCount;
this.context = context;
this.data = data;
}
@Override
public Fragment getItem(int position) {
return new MyFragment(data[position], context);
}
@Override
public int getCount() {
return slideCount;
}
public void setData(String[] data) {
this.data = data;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
MyFragment
public final class MyFragment extends Fragment {
private String text;
public MyFragment(String text, Context context) {
this.text = text;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.slide, null);
((TextView)view.findViewById(R.id.text)).setText(text);
return view;
}
}
यहाँ भी एक ऐसी ही समस्या है, जिसका कोई उत्तर नहीं है ।