Android布局的动态内容

时间:2011-11-01 12:33:15

标签: java android listview layout

原谅问题标题,因为我不确定使用正确的术语。 我只是熟悉ListView,我想做的是:

- 假设我有一个Dog类,它有 String name String breed int age

- 然后我会创建Dog的许多实例并将它们放入ListView中,它只显示它们的名称。

- 我也有一个布局,比如说 doginfo.xml ,它的文字是“Name:”,“Breed:”和“Age:”。

那么怎样才能使点击项的值(即:名称,品种,年龄)显示在下一个活动上,即 doginfo.xml

3 个答案:

答案 0 :(得分:1)

我假设你有一个你的狗的阵列/ arraylist,你正在添加它们以便列表视图。在android doc:

中查看此exmaple的onItemClickListener

http://developer.android.com/resources/tutorials/views/hello-listview.html

在你的点击监听器中使用“int position”从数组/ arraylist中获取对象。获得此信息后,您可以使用“bundle.putString()”和“b.getString()”在活动之间轻松传递信息。

请查看此简单教程,了解有关在活动之间传递数据的信息:

http://thedevelopersinfo.wordpress.com/2009/10/15/passing-data-between-activities-in-android/

答案 1 :(得分:1)

这很容易。获得ListView后,设置OnItemClickListener

listView.setOnItemClickListener(new OnItemClickListener() {
    public void onClick(AdapterView<?> parent, View view, int position, long id) {
        //Get your Dog object from the 'position' parameter you get here.
        //You should save the 'Dogs' in an array, so you can access them here easily.
        Dog d = mDogsArray[position];
        Intent intent = new Intent(YourActivity.this, DogInfoActivity.class);
        intent.putExtra("name", d.getName());
        intent.putExtra("breed", d.getBreed());
        intent.putExtra("age", d.getAge());
        startActivity(intent);
    }
}

如果要动态添加/删除狗,可以使用方法ListView.setListAdapter更改列表视图显示的视图。以这种方式创建一个数组适配器:

ArrayAdapter<String> dogs = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);

以这种方式添加狗:

dogs.add(dogInfoString)

答案 2 :(得分:1)

让我回答您需要遵循的步骤:

  1. 创建狗类对象ArrayList<DogClassObject>
  2. 的arraylist
  3. 现在在第一个活动中,只需从ArrayList中的每个对象中取名,然后在ArrayList<String>中逐个添加名称。
  4. 使用ArrayList显示第1个活动的ListView内部。
  5. 要实现此目的,请通过以下示例:Android Simple ListView

    现在,要在Click侦听器上实现并显示dog_info,请执行以下步骤:

    1. 在ListView中实现OnItemClickListener。
    2. 按照@Jong给出的答案,但是从ArrayList传递被点击的对象(你可以通过位置参数从ArrayList中获取被点击的对象)。
    3. 获取狗的信息并在dog_info中显示姓名,年龄,品种信息 要实现此目的,请通过以下示例:Android - Custom ListView with 2 TextViews