单击按钮时如何在android中获取带有ListView值的复选框,EditText?

Posted

技术标签:

【中文标题】单击按钮时如何在android中获取带有ListView值的复选框,EditText?【英文标题】:How to get checkbox,EditText with ListView values in android while clicking a button? 【发布时间】:2012-05-19 03:37:41 【问题描述】:

我是 android 世界的新手。我有一个列表视图,其中包含复选框和 EditText。当我在列表视图中显示记录时,我将选中复选框并在 editText 字段中输入文本。我会在很多行中做同样的事情。我有一个名为“保存”的按钮。使用它我想用新添加的文本和复选框值保存列表视图的详细信息。单击保存按钮时,我不知道如何获取值。请指导我。这是代码。

main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_
android:layout_>
<TextView android:id="@+id/TextView01" android:layout_
    android:text="List of items" android:textStyle="normal|bold"
    android:gravity="center_vertical|center_horizontal"
    android:layout_></TextView>
<ListView android:id="@+id/ListView01" android:layout_
    android:layout_>
</ListView>
<Button android:text="Save" android:id="@+id/btnSave"
    android:layout_ android:layout_>
</Button>
</LinearLayout>

listview.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_ android:gravity="left|center"
android:layout_ android:paddingBottom="5px"
android:paddingTop="5px" android:paddingLeft="5px">
<TextView android:id="@+id/TextView01" android:layout_
    android:layout_ android:gravity="center"
    android:textColor="#FFFF00" android:text="hi"></TextView>
<TextView android:text="hello" android:id="@+id/TextView02"
    android:layout_ android:layout_
    android:layout_marginLeft="10px" android:textColor="#0099CC"></TextView>
<EditText android:id="@+id/txtbox" android:layout_
    android:layout_ android:textSize="12sp"
    android:layout_x="211px" android:layout_y="13px">
</EditText>
<CheckBox android:id="@+id/chkbox1" android:layout_
    android:layout_ />
</LinearLayout>

CustomListViewActivity.java:

package com.listivew;

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class CustomListViewActivity extends ListActivity 
ListView l1;
static Context mContext;
Button btnSave;
private static class EfficientAdapter extends BaseAdapter 
    private LayoutInflater mInflater;

    public EfficientAdapter(Context context) 
        mInflater = LayoutInflater.from(context);

    

    public int getCount() 
        return country.length;
    

    public Object getItem(int position) 
        return position;
    

    public long getItemId(int position) 
        return position;
    

    public View getView(int position, View convertView, ViewGroup parent) 
        final ViewHolder holder;
        if (convertView == null) 
            convertView = mInflater.inflate(R.layout.listview, parent,
                    false);
            holder = new ViewHolder();
            holder.text = (TextView) convertView
                    .findViewById(R.id.TextView01);
            holder.text2 = (TextView) convertView
                    .findViewById(R.id.TextView02);
            holder.txt = (EditText) convertView.findViewById(R.id.txtbox);
            holder.cbox = (CheckBox) convertView.findViewById(R.id.chkbox1);

            convertView.setTag(holder);
         else 
            holder = (ViewHolder) convertView.getTag();
        

        holder.text.setText(curr[position]);
        holder.text2.setText(country[position]);
        holder.txt.setText("");
        holder.cbox.setChecked(false);

        return convertView;
    

    public class ViewHolder 
        TextView text;
        TextView text2;
        EditText txt;
        CheckBox cbox;
    


@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    l1 = (ListView) findViewById(R.id.ListView01);
    l1.setAdapter(new EfficientAdapter(this));
    btnSave = (Button)findViewById(R.id.btnSave);
    mContext = this;

    btnSave.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            // I want to print the text which is in the listview one by one. 
            //Later i will insert it in the database
            Toast.makeText(getBaseContext(), "EditText Value, checkbox value and other values", Toast.LENGTH_SHORT).show();

        
    );


private static final String[] country =  "item1", "item2", "item3",
        "item4", "item5", "item6" ;
private static final String[] curr =  "1", "2", "3", "4", "5", "6" ;


【问题讨论】:

您的问题不清楚。您想将您的内容推送到详细信息活动还是什么? 【参考方案1】:

试试这个,

btnSave.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
         for (int i = 0; i <l1.getCount() ; i++) 
             View vListSortOrder;
                    vListSortOrder=l1.getChildAt(i);     
                    try
                    EditText edit=(EditText)vListSortOrder.findViewById(R.id.share_comment_edit);
                   String temp=edit.getText().toString();

        
      
    );

类似地为您的 CheckBox 创建一个对象并获取其状态。简单的。

【讨论】:

您好 Andro Selva,感谢您的回复。我试过这个。但我没有成功。我们无法创建 ID 引用为“(EditText edit=(EditText)vListSortOrder.findViewById(R.id.share_comment_edit);)”的编辑文本。因为我在 ListView.xml 文件中有 EditText。但我在 main.xml 文件中有保存按钮。我无法在外面访问它。当我尝试您的代码时,它显示此错误。 ERROR/AndroidRuntime(282): Caused by: java.lang.RuntimeException: Your content must have a ListView its id attribute is 'android.R.id.list' 替换您的 Activity 以扩展“Activity”而不是 ListActivity。而不是 CustomListViewActivity 扩展 ListActivity 尝试 CustomListViewActivity 扩展 Activity 您好,谢谢您的回复。它工作正常。我在CustomeListViewActivity 中将ListActivity 更改为Activity。很大的帮助。非常感谢。 :) 我正在做类似的事情,但 EditText 编辑总是返回 null【参考方案2】:

我知道 edittext 使用以下内容:

holder.txt = ((EditText) convertView.findViewById(R.id.txtbox).getEditableText()).toString();

【讨论】:

以上是关于单击按钮时如何在android中获取带有ListView值的复选框,EditText?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中的活动开始时禁用按钮的单击事件检查

Android:单击时如何从按钮获取文本? [复制]

如何在单击提交按钮时获取复选框值?

通过单击 Android Studio 中的按钮在 webview 中获取随机 Youtube 视频

在Android中更改按钮单击的布局

如何通过单击按钮获取文件对象属性?