如何动态添加按钮和总数?

时间:2015-11-19 02:53:53

标签: android listview button android-listview

如何在TextView内添加总计 ListView,以及在{{1}下添加保存 Button动态的?

总计将显示类似于以下图像。 (注意:不是我的数据表示)

Example of a ListView Total Row

活动A(代码片段)

ListView

活动A(渲染输出)

Rendered Output

在这里,我想添加总计 long as=0; // for total long bs=0; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from B switch (requestCode) { case 0: result = data.getStringExtra("text"); // holds value (34,24) name = data.getStringExtra("a"); // Project as = as+Long.parseLong(result); // For total amount Text = " " + name + " " + "RM" + result + ""; // display in listView if (mClickedPosition == -1) { //add new list m_listItems.add(Text); m_listBitmapItems.add(Global.img); } else { // edit listView value and image m_listItems.set(mClickedPosition, Text); m_listBitmapItems.set(mClickedPosition, Global.img); } adapter.notifyDataSetChanged(); listV.setAdapter(adapter); break; case 1: // Another name result = data.getStringExtra("text"); name = data.getStringExtra("a"); description = data.getStringExtra("c"); bs = bs + Long.parseLong(result); Log.d("FIRST", "result:" + result); Text = " " + name + " " + "RM" + result + ""; if (mClickedPosition == -1) { m_listItems.add(Text); } else { m_listItems.set(mClickedPosition, Text); } adapter.notifyDataSetChanged(); listV.setAdapter(adapter); break; } } long samount = as + bs; Toast.makeText(getActivity(), samount + "", Toast.LENGTH_LONG).show(); } ,其值TextView(输出为58),以及保存 RM58

我正在使用以下xml文件。

A.XML

Button

claim.xml(在listView中)

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

    <TextView 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:padding="10dp" 
        android:text="@string/text" 
        android:textSize="20sp" />

    <ListView android:id="@+id/listView1" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" />

</LinearLayout>

感谢。

1 个答案:

答案 0 :(得分:2)

将以下footer.xml文件添加到res / layout http://developer.android.com/reference/android/widget/ListView.html

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

    // Format as you please
    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="Total" />

</LinearLayout>

在您的活动中创建并初始化以下变量。

LayoutInflater inflater = getLayoutInflater();
ViewGroup footer = (ViewGroup) inflater.inflate(R.layout.footer, listView,
            false);

// You can add this when an item is added and remove it if the list is empty.
listView.addFooterView(footer, null, false);


tv = (TextView)footer.findViewById(R.id.tv);

// Update the text.
tv.append("t/"+ results.toString());

如评论中所述,您可以使用long total作为静态类成员,并使用结果值total + = results更新它;如果从列表中删除了一个项目,请注意将值重置为零或减少它。

另一种方法是循环遍历列表中的项目,将项目解析为对象,并从每个对象获取类型long的特定值,并在您前进时对它们求和。

由于您现在可以动态添加按钮,我会简单地为其他用户浏览添加,将按钮可见性设置为GONE,这样当元素不可见时元素不会替换布局,HIDDEN使元素不可见,但元素占用的空间会影响布局(有时这很有用)。然后,当项目添加到列表时,按钮可见性将动态更改为VISIBLE,并在清除列表时返回GONE。

<Button
    android:id="@+id/btn"
    android:text="button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"/>

http://developer.android.com/reference/android/transition/Visibility.html