2016-12-06 3 views
1

Я попытаюсь объяснить, что я думаю делать в качестве приложения для Android. Но я действительно смущен, как бы подойти к этой проблеме.Пролистайте вкладки для неизвестного количества предметов

Когда вы получаете JSON из какого-либо веб-API (например, Location), и предположим, что JSON имеет 5 разных местоположений, и вы хотите сохранить каждое местоположение в виде отдельного элемента списка в виде списка. Это просто, вы используете класс адаптера местоположения, а затем эти 5 элементов сохраняются в виде списка. Например, JSON обновляется через 24 часа и теперь есть 10 мест. Никаких проблем вообще - Android справляется с этим из-за адаптера местоположения и т. Д. (Я знаю все это). В основном, что я пытаюсь сказать, что андроид не должен знать, сколько элементов списка будет перед извлечением информации из JSON.

Проблема в том, что я пытаюсь создать прокрутки, которые будут представлять каждый элемент списка (1 полный вид = 1 элемент списка). Например, если есть 5 местоположений, я могу прокручивать только 4 раза, а затем дойду до последней вкладки. Если есть обновление, и есть 10 мест, я мог бы прокручивать 9 раз, пока не дойду до конца. Надеюсь, вы понимаете идею.

Мой вопрос: как мне создать динамические проецируемые представления, где каждый элемент списка будет иметь свое отдельное окно и достигнуть другого элемента списка, который вы бы провёл?

Моя главная проблема заключается в том, как вы не укажете андроиду, сколько прокручиваний вам понадобится, и он выяснит это, прочитав JSON и узнает количество мест.

Большое спасибо

+0

Помогите мне помочь. – AlphaQ

+0

, если веб-API всегда отправляет вам три элемента, знаете ли вы, как их использовать? –

+0

Ну, я был бы в состоянии это сделать, но я не уверен, как пронести неизвестное количество предметов –

ответ

0

Допустим, ваши данные, как это:

{"India","Morocco","China","Russia"} 

Вы можете GetLength из JSON object.In этот случай является 4.Save, что в статическом variable.Suppose max_swipes=4

Тогда в красть метод

`if(position<=max_swipes || position==0){//code to swipe } 
else 
{ 
//cannot swipe last position 
}` 
0

Чтобы реализовать такую ​​функциональность, вы просто можете использовать viewPager. Вы можете скопировать код с here и here. Это два файла, и вам просто нужно их скопировать. После добавления этих двух файлов в проект вам необходимо создать адаптер, и вот что делает его динамичным для создания прокрутки.

Я добавляю фрагмент кода, надеюсь, он вам поможет.

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 

private DetailFragment page; 
CharSequence Titles[]; // This will Store the Titles of the Tabs which are Going to be passed when ViewPagerAdapter is created 
int NumbOfTabs; // Store the number of tabs, this will also be passed when the ViewPagerAdapter is created 


// Build a Constructor and assign the passed Values to appropriate values in the class 
public ViewPagerAdapter(FragmentManager fm, CharSequence mTitles[], int mNumbOfTabsumb) { 
    super(fm); 
    this.Titles = mTitles; 
    this.NumbOfTabs = mNumbOfTabsumb; 
} 

//This method return the fragment for the every position in the View Pager, This method is called only when we slide or change the tabs and not called upon rotating the screen 
@Override 
public Fragment getItem(int position) { 
    if(position < NumbOfTabs) 
    { 
     page= new DetailFragment(); 
     return page; 
    }else { 
     return null; 
    } 


} 

// This method return the titles for the Tabs in the Tab Strip(in case you want to add title to each page. 

@Override 
public CharSequence getPageTitle(int position) { 
    return Titles[position]; 
} 

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

} 

При создании экземпляра этого адаптера вы можете передать номер страницы, которую вы собираетесь требовать путем вычисления количества элементов в формате JSON.

Надеюсь, это поможет.

+0

Спасибо! Я дам ему пойти –

Смежные вопросы