Android应用程序 - 如何显示项目列表并使其可单击

时间:2012-03-09 16:06:10

标签: android

我需要在屏幕上显示一个文本项列表,并使它们可以点击。所以它就像是Web应用程序上的链接列表。

如何在Android活动屏幕中执行此操作?

我必须从数据库中提取一些随机数量的项目,并将所有项目显示为链接。

知道如何做到这一点?

4 个答案:

答案 0 :(得分:9)

您应该阅读有关ListActivityListView的文档并按照Hello ListView tutorial进行操作。

答案 1 :(得分:9)

是的,你可以做到。创建一个DataExchange类以从Db中获取它。 将字符串存储在数组中。

创建一个ArrayAdapter以显示从数据库中获取的字符串数组。

例如

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应为

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

}
}

你必须相应地创建各种布局文件。 希望这可以帮助你:)

答案 2 :(得分:3)

您应该使用ListView。这很简单,只需创建一个ListActivity,将您的项目放在Adapter中,然后将其设置为Adapter的{​​{1}}。

您可以阅读有关ListView here

的更多信息

答案 3 :(得分:1)

还有一种名为ListFragment的新范例。

我之前使用过ListViews,但现在更喜欢片段方法 - 它只是非常直接且非常灵活的平板电脑,因为在选择项目时与屏幕上的另一个区域的交互非常灵活,只需要非常少的代码。 / p>

只是一个例子:

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

    }

}

此处有更多信息:http://developer.android.com/reference/android/app/ListFragment.html

顺便说一下,我觉得熟悉新的片段概念真的很值得 - 它让生活变得更加容易 - 特别是平板电脑!

ps我故意离开调试语句 - 因为它有助于我在经验中更快地理解整个概念