2012-03-09 10 views

Odpowiedz

3

Powinieneś użyć ListView. To bardzo proste, po prostu stwórz ListActivity, umieść swoje przedmioty wewnątrz Adapter, a następnie ustaw je jako Adapter swojego ListActivity.

Możesz przeczytać więcej o ListViews here

1

Jest też nowy paradygmat zwany ListFragment.

Używałem ListViews wcześniej, ale wolę teraz podejście do fragmentów - jest po prostu bardzo proste i dość elastyczne na tabletach, ponieważ interakcja z innym obszarem na ekranie przy wybieraniu elementu jest dość elastyczna i wymaga tylko bardzo niewielkiego kodu.

Tylko jeden przykład:

public class Select_FoodCategories_Fragment extends android.app.ListFragment { 
    private static final boolean DEBUG = true; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    if (DEBUG) 
     Log.i(this.getClass().getSimpleName(), " ->" 
      + Thread.currentThread().getStackTrace()[2].getMethodName()); 
    super.onCreate(savedInstanceState); 

    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    if (DEBUG) 
     Log.i(this.getClass().getSimpleName(), " ->" 
      + Thread.currentThread().getStackTrace()[2].getMethodName()); 
    HoldingActivity a = (HoldingActivity) getActivity(); 
    //accessing a variable of the activity is easy 
    a.visibleListViewInFragment = getListView(); 

    List<XYZ> listTodisplay = a.getListToDisplay(); 

    MyAdapter adapter = new MyAdapter(
     getActivity(), 0, listTodisplay); 
    setListAdapter(adapter); 

    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
    if (DEBUG) 
     Log.i(this.getClass().getSimpleName(), " ->" 
      + Thread.currentThread().getStackTrace()[2].getMethodName()); 
     XYZ item = (XYZ) getListAdapter() 
     .getItem(position); 

    } 

} 

Więcej informacji tutaj: http://developer.android.com/reference/android/app/ListFragment.html

Nawiasem mówiąc, uważam, że naprawdę warto zapoznać się z nową koncepcją fragmenty - po prostu na żywo sprawia, że ​​o wiele łatwiej - zwłaszcza na tabletach!

ps Wyszedłem sprawozdań debugowania w celowo - ponieważ pomaga altowy zrozumieć całą koncepcję znacznie szybciej w moim doświadczeniu

8

Tak można to zrobić. Utwórz klasę DataExchange, aby pobrać ją z Db .. Przechowuj ciągi znaków w tablicy.

Utwórz ArrayAdapter, aby wyświetlić tablicę ciągów, które otrzymałeś z bazy danych.

dla przykładu

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

    // storing string resources into Array 
    String[] numbers = {"one","two","three","four"} 
    // here you store the array of string you got from the database 

    // Binding Array to ListAdapter 
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label,  numbers)); 
    // refer the ArrayAdapter Document in developer.android.com 
    ListView lv = getListView(); 

    // listening to single list item on click 
    lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

      // selected item 
      String num = ((TextView) view).getText().toString(); 

      // Launching new Activity on selecting single List Item 
      Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
      // sending data to new activity 
      i.putExtra("number", num); 
      startActivity(i); 

     } 
    }); 
} 
} 

secondActivity aby wyświetlić określonego elementu kliknięciu powinna być

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(); 
    // getting attached intent data 
    String product = i.getStringExtra("number"); 
    // displaying selected product name 
    txtProduct.setText(product); 

} 
} 

trzeba tworzyć różne pliki układu odpowiednio .. Nadzieja to pomaga :)

Powiązane problemy