2012-04-24 12 views
6

मेरे पास मेरे एंड्रॉइड ऐप की स्थिति है। परिदृश्य है कि मैं एक व्यूपेज एडाप्टर का उपयोग कर रहा हूं, मेरे पास 3 पेज हैं जो वास्तव में टुकड़े हैं। मेरे मुद्दे यह है कि मैं चाहता हूं इन्हें एक संवाद गतिविधि से अपडेट करें। संवाद गतिविधि जिसकी ऑनक्लिक घटना से मैं खंड को अद्यतन करना चाहता हूं।किसी अन्य गतिविधि के माध्यम से viewpageadapter में एक खंड को रीफ्रेश कैसे करें

सबसे पहले यह संभव है यदि हां कृपया चिपकाएं और मेरी मदद करें।

चीयर्स गौरव

यह वह जगह है मेरे विचार पेज एडाप्टर

/* 
* Copyright (C) 2012 Gaurav Rawat 
* 
*/ 
package com.punksrant.ifinddryday.adapter; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

import com.punksrant.ifinddryday.fragment.AllFragment; 
import com.punksrant.ifinddryday.fragment.HomeFragment; 
import com.punksrant.ifinddryday.fragment.SynchFragment; 
import com.punksrant.ifinddryday.utils.IFindDryDaysConstants; 
import com.viewpagerindicator.TitleProvider; 

public class ViewPagerAdapter extends FragmentPagerAdapter implements 
     TitleProvider { 

    private static String[] titles = IFindDryDaysConstants.titles; 

    public ViewPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public String getTitle(int position) { 
     return titles[position % titles.length].toUpperCase(); 
    } 

    @Override 
    public int getCount() { 
     return titles.length; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment; 
     switch (position) { 
     case 0: 
      fragment = HomeFragment.newInstance(); 
      break; 
     case 1: 
      fragment = AllFragment.newInstance(); 
      break; 

     case 2: 
      fragment = SynchFragment.newInstance(titles[position 
        % titles.length]); 
      break; 

     default: 
      fragment = HomeFragment.newInstance(); 
     } 
     return fragment; 
    } 

} 
' and in this I want to refresh the home fragment from my dialog class 
'/* 
* Copyright (C) 2012 Gaurav Rawat 
* 
*/ 
package com.punksrant.ifinddryday.activity; 

import roboguice.inject.ContentView; 
import roboguice.inject.InjectView; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

import com.github.rtyley.android.sherlock.roboguice.activity.RoboSherlockFragmentActivity; 
import com.google.inject.Inject; 
import com.punksrant.ifinddryday.model.Coordinates; 
import com.punksrant.ifinddryday.utils.DryDayJSONResParser; 
import com.punksrant.ifinddryday.utils.IFindDryDayViewUtils; 

@ContentView(R.layout.statedialog) 
public class Dialog extends RoboSherlockFragmentActivity { 
    @InjectView(R.id.dialogList) 
    ListView listView; 
    @Inject 
    SharedPreferences preferences; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     String[] states = DryDayJSONResParser.getSupportedStates(); 
     listView.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, states)); 
     listView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       String state = ((TextView) view).getText().toString(); 
       Coordinates coordinates = IFindDryDayViewUtils 
         .getCoordinatesFromPreferences(preferences); 
       coordinates.setState(state); 
       IFindDryDayViewUtils.updateCityFromLocation(coordinates, 
         preferences); 

       finish(); 
      } 

     }); 
    } 
}, 
+0

आपका व्यूज़ एडाप्टर कहां है? क्या आप उस गतिविधि का कुछ कोड पोस्ट कर सकते हैं जिसमें व्यूअरज़र है? – gutiory

+0

हाय @ गुटोरी कोड को एक बार वापस पेस्ट करेगा, वास्तव में जस्ट है कि मैं जेक की व्यूपेजर इंडिकेटर लाइब्रेरी का उपयोग कर रहा हूं। Http://github.com/JakeWharton/Android-ViewPagerIndicator खंडों के साथ fragmentpageadapter से जोड़ा जा रहा है। जल्द ही कोड पोस्ट करें मैं वापस आ गया हूँ। –

+0

यह मेरा दृश्य पृष्ठ एडाप्टर –

उत्तर

1

(क्रेडिट rui.araujo blahdiblah करने के लिए) वहाँ इस लक्ष्य को हासिल करने के लिए कई तरीके हैं।

पहला विकल्प आसान है, लेकिन थोड़ा अधिक अक्षम है।

अवहेलना getItemPosition में अपने PagerAdapter इस तरह:

public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

इस तरह, जब आप notifyDataSetChanged() फोन, देखने पेजर सभी दृश्यों को हटाने और उन सब को फिर से लोड होगा। इसलिए रीलोड प्रभाव प्राप्त होता है।

दूसरा विकल्प, suggested by alvarolb, विधि instantiateItem() में एक नया दृश्य तत्काल करने पर है। फिर notifyDataSetChanged() का उपयोग करने के बजाय, आप जिस दृश्य को अपडेट करना चाहते हैं उसे ढूंढने के लिए आप findViewWithTag() का उपयोग कर सकते हैं।

दूसरा दृष्टिकोण बहुत लचीला और उच्च प्रदर्शनकारी है। मूल शोध के लिए अलवरोल को कुडोस।

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