从动态列表中获取值

时间:2012-02-07 20:33:42

标签: java android

大家好日子,

我正在学习Android开发,我尝试为我的应用程序构建一些动态列表。而且我已经卡住了......已经4个小时了。

我有两种布局: 1. main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:id="@+id/action_buttons"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:gravity="center"
    >

<Button
    android:id="@+id/button_count"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_calculate" />

<Button
    android:id="@+id/button_add"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/button_count"
    android:text="@string/button_add" />
</LinearLayout>    

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_below="@+id/action_buttons"
    >      

    <LinearLayout
        android:id="@+id/action_list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </LinearLayout>
</ScrollView>    
</RelativeLayout>
  1. action_list_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/action_list_item_root"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    
    <EditText
        android:id="@+id/action_list_item_edittext_drinkName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/action_list_item_button_remove"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/action_list_item_title"
        android:padding="10dp" />
    
    <EditText
        android:id="@+id/action_list_item_edittext_drinkPercent"
        android:text="40"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/action_list_item_edittext_drinkAmount"
        android:inputType="number"
        android:padding="10dp"/>
    
    <EditText
        android:id="@+id/action_list_item_edittext_drinkAmount"
        android:text="0.0"        
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/action_list_item_button_remove"
        android:layout_alignBottom="@+id/action_list_item_button_remove"
        android:inputType="numberDecimal"      
        android:width="50dp"
        android:padding="10dp" />
    <Button
        android:id="@+id/action_list_item_button_remove"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="@string/action_list_item_button_remove" />
    

  2. 创建动态列表的代码:

    public class MainActivity extends Activity {
      LinearLayout actionList = null;
      private Button btnAdd;
      private Button btnCalculate;
    
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        initActivityElements();
    
      }
    
      private void initActivityElements() {
        initAddButton();
        initCalculateButton();
      }
    
      private void initCalculateButton() {
        btnCalculate = (Button) findViewById(R.id.button_count);
        btnCalculate.setOnClickListener(new View.OnClickListener() {
    
          @Override
          public void onClick(View v) {
            TextView amount = (TextView) findViewById(R.id.action_list_item_edittext_drinkAmount);
    
    //this retrives TextView value from first list
            Toast.makeText(getApplicationContext(), amount.getText().toString(),
                Toast.LENGTH_SHORT)
                .show();
    
          }
        });
      }
    
      private void initAddButton() {
        actionList = (LinearLayout) findViewById(R.id.action_list);
        btnAdd = (Button) findViewById(R.id.button_add);
    
        btnAdd.setOnClickListener(new View.OnClickListener() {
    
          @Override
          public void onClick(View v) {
            RelativeLayout listItem = (RelativeLayout) View.inflate(
                MainActivity.this, R.layout.action_list_item, null);
    
            TextView name = (TextView) listItem
                .findViewById(R.id.action_list_item_edittext_drinkName);
            name.setText("Here is the Title " + actionList.getChildCount());
    
            listItem.findViewById(R.id.action_list_item_button_remove)
                .setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                    actionList.removeView((View) v.getParent());
                  }
                });
    
            actionList.addView(listItem);
          }
        });
      }
    

    我的问题是我需要从TextView框中获取所有数据(Amount,Percent),但我只能从列表的第一项中检索该数据(查看onClickListener以获取 btnCalculate )和无法弄清楚如何做到这一点,但试图为视图添加“独特的ids”(但是制动布局很糟糕),尝试设置标签但又没有运气。

    也许有人可以给小费?我打赌有一些简单的方法可以做到这一点,但我没有找到它,谷歌在这里没有帮助。

    由于

1 个答案:

答案 0 :(得分:0)

我不确定你究竟想要做什么,但听起来你正在尝试接收信息并将其填充到视图中。我建议使用一个静态文本框来接收您的信息并将其构建到列表视图中。这里有一个很好的例子http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html