【问题标题】:Dynamic content for Android layoutAndroid 布局的动态内容
【发布时间】:2011-11-01 12:33:15
【问题描述】:

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

-假设我有一个 Dog 类,它有 String nameStringbreedint age

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

-我也会有一个布局,比如说 doginfo.xml,其中包含文本“姓名:”、“品种:”和“年龄:”。

那么如何才能让被点击的item的值(即:name、breed、age)显示在下一个activity,也就是doginfo.xml上呢?

【问题讨论】:

    标签: java android listview layout


    【解决方案1】:

    我假设您有一个您的狗的数组/数组列表,并且您正在将它们添加到您的列表视图中。在 android 文档中查看此示例的 onItemClickListener:

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

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

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

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

    【讨论】:

      【解决方案2】:

      这很容易。获得 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)
      

      【讨论】:

      • 我现在已经设法让它工作了,但是有没有办法从新活动中更改对象的值?
      • 您的意思是,更改 actual 狗数组中DogInfoActivity 中显示的狗的值?当然可以。
      【解决方案3】:

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

      1. 创建狗类对象ArrayList&lt;DogClassObject&gt;的arraylist
      2. 现在在第一个活动中,只需从 ArrayList 中的每个对象中获取名称,然后在 ArrayList&lt;String&gt; 中一一添加名称。
      3. 使用 ArrayList 在第一个活动的 ListView 内显示。

      要实现这一点,请通过以下示例:Android Simple ListView

      现在,要实现点击监听器并显示 dog_info,请执行以下步骤:

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

      【讨论】:

      • 我现在已经设法让它工作了,但是有没有办法从新活动中更改对象的值?
      猜你喜欢
      • 2019-07-18
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      相关资源
      最近更新 更多