2012-03-09 20 views
8

Tôi cần hiển thị danh sách các mục văn bản trên màn hình và làm cho chúng có thể nhấp được. Vì vậy, nó sẽ là một cái gì đó giống như một danh sách các liên kết trên một ứng dụng web.Ứng dụng Android - cách hiển thị danh sách các mục và làm cho chúng có thể nhấp được

Tôi làm cách nào để thực hiện điều đó trong màn hình Hoạt động trên Android?

Sẽ là một số mục ngẫu nhiên mà tôi phải lấy từ một db và hiển thị tất cả dưới dạng liên kết.

Bất kỳ ý tưởng nào có thể thực hiện được?

Trả lời

3

Bạn nên sử dụng ListView. Nó rất đơn giản, chỉ cần tạo một ListActivity, đặt các mục của bạn bên trong một Adapter và sau đó đặt nó là Adapter trong số ListActivity của bạn.

Bạn có thể đọc thêm về ListViews here

1

Ngoài ra còn có một mô hình mới được gọi là ListFragment.

Tôi đã sử dụng ListView trước đây nhưng thích cách tiếp cận phân đoạn hơn - nó chỉ rất thẳng về phía trước và khá linh hoạt trên máy tính bảng kể từ khi tương tác với khu vực khác trên màn hình khi chọn một mục khá linh hoạt và chỉ yêu cầu mã rất ít.

Chỉ cần một ví dụ:

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); 

    } 

} 

Thông tin thêm ở đây: http://developer.android.com/reference/android/app/ListFragment.html

Bằng cách này, tôi thấy nó thực sự giá trị nó để làm quen với các khái niệm mảnh mới - nó chỉ làm cho sống dễ dàng hơn nhiều - esp trên máy tính bảng!

ps tôi rời những điều khoản debug ở vào mục đích - vì nó giúp alto để hiểu được toàn bộ khái niệm nhanh hơn nhiều trong kinh nghiệm của tôi

8

Có bạn có thể làm điều đó. Tạo một lớp DataExchange để lấy nó từ Db .. Lưu trữ các chuỗi trong một mảng.

Tạo ArrayAdapter để hiển thị mảng Chuỗi bạn nhận được từ cơ sở dữ liệu.

cho Ví dụ

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); 

     } 
    }); 
} 
} 

Các secondActivity để hiển thị các item đặc biệt bạn đã nhấp nên

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); 

} 
} 

bạn phải tạo file bố trí khác nhau phù hợp .. Hy vọng điều này sẽ giúp bạn :)

Các vấn đề liên quan