2013-04-27 6 views
0

Я разрабатываю приложение для Android ... На первой странице есть список, в котором есть названия городов. Я знаю, когда пользователь нажимает на элемент одного списка, он перейдет на страницу и отображать содержимое. Но моя потребность в том, что пользователь нажимает на каждый отдельный элемент в виде списка. Он должен перейти на разные страницы .. подробная страница городов ... если есть 10 элементов списка. когда пользователь нажимает на каждый элемент списка ... другая страница должна прибыть ... например, в разных городах, таких как Нью-Йорк, Лондон, Сидени .. и т. д., когда пользователь нажимает кнопку лондона ... он должен перейти к лондонскому описанию страницыПросмотр списка Android для другого представления подробностей

public class SingleListItem extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.single_list_item_view); 

     TextView txtProduct = (TextView) findViewById(R.id.product_label); 

     Intent i = getIntent(); 

     String product = i.getStringExtra("product"); 

     txtProduct.setText(product); 
} 
} 

в этом случае, когда пользователь нажимает на один список, он перейдет к его продукту p возраст ...

public class AndroidListViewActivity extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     String[] adobe_products = getResources().getStringArray(R.array.adobe_products); 


     this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products)); 

     ListView lv = getListView(); 


     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 


       String product = ((TextView) view).getText().toString(); 


       Intent i = new Intent(getApplicationContext(), SingleListItem.class); 

       i.putExtra("product", product); 
       startActivity(i); 

      } 
     }); 
    } 
} 
+0

Итак, в чем проблема? – TomTasche

ответ

0

Я не вижу проблемы здесь, у вас есть несколько possibilites:

  1. Вы можете определить свои новые намерения с вашей позицией, используя switch. В случае, если 0, вы прыгаете в Нью-Йорк, в случае 1, вы прыгаете в Лондоне и т.д.

    переключатель (положение) {

    case 0: 
    //call intent NewYork 
    break; 
    case 1: 
    ... 
    

    }

  2. Если у вас есть тонны элементов списка это может преобразуйте свой код в спагетти. В этом случае я создам ArrayList с городами, которые будут в подходящей последовательности. Поэтому, если позиция 0 направляет вас в класс NewYorkListItem.class, вы записываете эту строку в 0-ю позицию вашего ArrayList и т. Д. Вы можете легко вызвать класс вроде: Class.forName("com.example."+mArrayList.get(position) + "ListItem");, где 0-я позиция в вашем файле mArrayList содержит «NewYork».

  3. Если вы не используете функции, решение Fragment - еще один приятный способ, я думаю. Но так вы должны добавить фрагменты через FragmentTransaction, так как вы можете только заменить фрагменты, которые вы добавили динамически с помощью транзакции.

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

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