2015-04-20 4 views
0

У меня есть ListView, заполненный некоторым текстом (модели телефонов в моем случае, например: Samsung A, B, C ...) и изображение (загруженное из URL с использованием андроид-запрос). При выборе ряду: ViewPager будет создан вместе с 3 Вкладкой (Спекуляциями, информации, Img), оба фрагмента функцией и Info отображает ListView и последний фрагмент, Img отображает GridView. У меня нет проблем с последним фрагментом, но только с первыми 2, так как я не знаю, как заполнить ListView, чтобы он отображал содержимое для выбранной строки.Android ListView, каждая строка отображает собственный контент внутри другого ListView

Можно ли указать для каждой строки другой массив строк?

Если нет, то как я могу добиться этого:

enter image description here

Как вы можете заметить в этом примере, Samsung D, имеет больше информации, чем предыдущий.

enter image description here

Это ClickListener главного элемента ListView:

listView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Bundle bundle = new Bundle(); 
       bundle.putInt("id", position); 
       TabStripAdapter newFragment = new TabStripAdapter(); 
       newFragment.setArguments(bundle); 
       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
       transaction.replace(R.id.frame_container, newFragment); 
       transaction.addToBackStack(null); 
       transaction.commit(); 
      } 
     }); 

Извините за мой английский.

+0

Вы используете основной список ListView onClickListener? – dhun

+0

** Да ** вы можете указать для каждой строки разные данные для отображения в вашем ViewPager. – Rami

+0

Да, это возможно. Используйте Custom ArrayAdapter. Вы можете найти хорошие учебники относительно этого [здесь] (http://www.vogella.com/tutorials/AndroidListView/article.html) – dora

ответ

0

Вы должны использовать на OnItemClickListener для вашей основной ListView и вы будете есть 3 варианта:

  1. Имея массив объектов в главном окне списка, но только отображать название модели или информацию Вы хотите, поэтому, когда пользователь выбирает элемент, просто получайте объект из позиции и передавайте значения (атрибуты объекта) другому действию.

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

  3. Имея два массива объектов атрибутов (itemId, itemName) в первом действии, и когда пользователь выбирает элемент, передайте itemId в следующее действие и из 3-элементного запроса активности (к веб-службе или база данных) для информации из объекта, у которого есть идентификатор.

Это должно выглядеть примерно так:

MainListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 

    @Override 
     public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
//  String selectedProductId = MainListArray.get(position).getId(); //Option 1 & 3 
//  String selectedProductInfo = MainListArray.get(position).getInfo(); 
// ...more attributes //Option 1 
//  CustomObject selectedProduct = MainListArray.get(position); //Option 2. 
     Intent i = new Intent(_myContext, newActivity.class); 
//   i.putString("productId", selectedProductId); //Option 1 & 3. 
//   i.putString("productInfo", selectedProductInfo); //Option 1. 
// ...more attributes //Option 2. 
//  i.putParceleable("product", selectedProduct); //Option 2. 

     startActivity(i); 
     } 

}); 

Для прохождения полного освещения объекта на this thread, он покажет вам, как это сделать.

+0

Проверьте мой вопрос, я добавил ClickListener для основного ListView. – Alec