У меня есть приложение с ViewPager и ViewPagerIndicator. У меня есть две вкладки с вкладкой TabPageIndicator. Каждая вкладка загружает список с данными Интернета. Когда я запускаю приложение, загружает данные с вкладки 1 и 2, это очень медленно отображает представление. Я хочу, чтобы при запуске приложения только загружать вкладку данных 1 и когда я перехожу или нажимаю на вкладку 2, загружайте данные для этой вкладки.ViewPagerIndicator с двумя ListFragment медленно при загрузке данных
Вы можете мне помочь?
спасибо.
Мой код:
MainActivity
public class MainActivity extends FragmentActivity {
private static final String[] CONTENT = new String[] { "Releases", "Artists" };
private ListView listRls;
private List<Fragment> listaFragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
listaFragments = new ArrayList<Fragment>();
listaFragments.add(new FragmRls());
listaFragments.add(new FragmArt());
MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(),
listaFragments);
ViewPager pager = (ViewPager)findViewById(R.id.pager);
pager.setAdapter(adapter);
TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);
indicator.setViewPager(pager);
}
class MyFragmentAdapter extends FragmentStatePagerAdapter {
//Implementacion del fragmentStateADapter
private List<Fragment> fragments;
public MyFragmentAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
// TODO Auto-generated constructor stub
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return fragments.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length].toUpperCase();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return fragments.size();
}
}//fin adapter
}//fin class
код в одном из классов, которые простираются от ListFragement, другой идентичен.
public class FragmRls extends ListFragment{
JSONParser jParser = new JSONParser();
private static String url_all_post = "http://adeptlabel.com/listReleaseforTab.php";
private static String url_all_art = "http://adeptlabel.com/listArtists.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_posts = "wp_posts";
private static final String TAG_TITULO = "titulo";
private static final String TAG_IMAGEN = "imagen";
JSONArray posts = null;
private ArrayList <ElementosList> elementos = new ArrayList <ElementosList>();
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.fragmrls, null);
}//Fin On CreateView
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
elementos.clear();
loadDataJsonRls();
for(int i=0;i<ListViewConfig.getResim_list_txt().size();i++)
{
elementos.add(new ElementosList(ListViewConfig.getResim_list_txt().get(i),
ListViewConfig.getResim_list_img().get(i)));
}
ArrayAdapter<ElementosList>adaptador = new AdaptadorList(getActivity(),elementos);
setListAdapter(adaptador);
}
public void loadDataJsonRls()
{
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_all_post, "GET", params);
// Check your log cat for JSON reponse
Log.d("All releases: ", json.toString());
try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
posts = json.getJSONArray(TAG_posts);
//Borramos los arrayList
ListViewConfig.deleteResim_list_img();
ListViewConfig.deleteResim_list_txt();
// looping through All post
for (int i = 0; i < posts.length(); i++) {
boolean repite = false;
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String titulo = c.getString(TAG_TITULO);
String imagen = c.getString(TAG_IMAGEN);
for(int j=0;j<ListViewConfig.getResim_list_txt().size();j++)
{
if(titulo.equals(ListViewConfig.getResim_list_txt().get(j)))
{
repite = true;
}
}
if(repite==false)
{
ListViewConfig.addImageUrls(imagen);
ListViewConfig.addTextUrls(titulo);
}
}
} else {
//Log.d("MainActivity.class", "No success Json");
}
} catch (JSONException e) {
e.printStackTrace();
}
}//fin cargarDatosJsonRls()
}//fin class
Постараюсь это Реализовать onPageChangeListener легко, но я должен.. подумайте, как вызвать загрузку данных.Я скажу вам результат.Спасибо. – Garmael
Когда я пытаюсь реализовать OnPageSelected, если вызов setListAdapter вызывает ошибку: метод setListAdapter ( ArrayAdapter) не определен для типа нового ViewPager. OnPageChangeListener() {} –
Garmael
Что я могу сделать? – Garmael