单击按钮时如何在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?的主要内容,如果未能解决你的问题,请参考以下文章