Android 无法从自定义listView获取EditText值
对不起,我不知怎么的不能对答案发表评论,所以我必须在这里写我自己的 我需要从自定义ListView(由EditText和ImageView组成)获取字符串数据。 这是我的密码:Android 无法从自定义listView获取EditText值,android,listview,Android,Listview,对不起,我不知怎么的不能对答案发表评论,所以我必须在这里写我自己的 我需要从自定义ListView(由EditText和ImageView组成)获取字符串数据。 这是我的密码: 首先,我声明我自己的ArrayList副本 private ArrayList m_edit=null 其次,我在活动的onCreate方法中初始化它 public void onCreate(Bundle savedInstanceState){ … m_edit=new ArrayList(); … 第三,我用Edi
private ArrayList m_edit=null代码>
public void onCreate(Bundle savedInstanceState){
…
m_edit=new ArrayList();
…
fieldAddButton.setOnClickListener(new OnClickListener()
{
public void onClick(View view){
EditText et = new EditText(AddCategory.this);
m_edit.add(et);
m_adapter.notifyDataSetChanged();
}
});
for (int i = 0;i<m_edit.size();i++){
_string = m_edit.get(i).getText().toString();
}
for(int i=0;i您可以提供代码片段,以便更清楚地了解如何使用edittext Arraylist。
由此我可以看出,您正在arraylist中添加edittext并刷新您的listview。但是您的listview是否使用添加的edittext进行了刷新?那么这就是您的代码的主要问题。感谢您提供的源代码
我认为您使用的是listview,单击按钮时您试图获取edittext值。但您如何知道从listview中选择了哪个位置视图
我认为你的要求和所做的都有问题。我认为你所做的是单击一个按钮,然后尝试获取所有edittext值。从下面的代码中,我猜你从ArrayList
而不是edittext
字段中获取文本是错误的
m_edit = new ArrayList<EditText>();
for (int i = 0;i<m_edit.size();i++) {
_string = m_edit.get(i).getText().toString();
}
您得到的是空白值,因为在listview中您没有编辑它。您可以这样做
在适配器getview方法中放入以下代码
public View getView(final int position, View convertView, ViewGroup parent) {
ed.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
list.get(position).edittext.setText(ed.getText().toString())
}
});
}
希望这能对您有所帮助。单击fieldAddButton之后,您将只获得editText值。顺便说一句,您将其称为for loop。我已经编辑了我的帖子并添加了hole源代码。希望它能帮助您。谢谢。我需要做的是将我的ListView的所有editText值保存在数据库表中。为此,我尝试使用ArrayList来存储所有的Edi从我的ListView中读取文本。然后从中读取数据。但是我有一个问题:我不知道,如果ListView中有任何更改(例如,用户输入了一些文本),如何更新ArrayList。诸如此类。谢谢
final ListView fieldList = (ListView)findViewById(R.id.CategoryFieldList);
fieldList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
EditText et = (EditText)v.findViewById(R.id.fieldEdit);
String myText = et.getText().toString();
Toast.makeText(getApplicationContext(), myText , Toast.LENGTH_SHORT).show();
}
});
public View getView(final int position, View convertView, ViewGroup parent) {
ed.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
list.get(position).edittext.setText(ed.getText().toString())
}
});
}