listview 获得每行中的EditText值的问题请问各位 我现在有个listview, 每一行都由一个TextView和EditText
listview 获得每行中的EditText值的问题
请问各位 我现在有个listview, 每一行都由一个TextView和EditText
请问我如何通过循环来抓每行EditText中输入的值?
[最优解释]
lv_qty.getAdapter().getView(1, null, null).findViewById(id);
可以获取里面的TextView和EditText然后你在获取文本;
[其他解释]
getView方法是系统调用的,自己程序也可以顺便调用的吗?
[其他解释]
自己写adapter来控制你的listview,然后在你的adapter种的getItem()这个方法中,你返回你要的EditText的值。
[其他解释]
4,5楼正解。可以把下面代码里面的text2替换成你的EditView
package irdc.ex05_18;
/* import相關class */
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
/* 自定義的Adapter,繼承android.widget.BaseAdapter */
public class MyAdapter extends BaseAdapter
{
/* 變數宣告 */
private LayoutInflater mInflater;
private List<String> items;
private List<String> values;
/* MyAdapter的建構子,傳入三個參數 */
public MyAdapter(Context context,List<String> item,List<String> value)
{
/* 參數初始化 */
mInflater = LayoutInflater.from(context);
items = item;
values = value;
}
/* 因繼承BaseAdapter,需覆寫以下method */
@Override
public int getCount()
{
return items.size();
}
@Override
public Object getItem(int position)
{
return items.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent)
{
ViewHolder holder;
if(convertView == null)
{
/* 使用自定義的file_row作為Layout */
convertView = mInflater.inflate(R.layout.row_layout,null);
/* 初始化holder的text與icon */
holder = new ViewHolder();
holder.text1=(TextView)convertView.findViewById(R.id.myText1);
holder.text2=(TextView)convertView.findViewById(R.id.myText2);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
/* 設定要顯示的資訊 */
holder.text1.setText(items.get(position).toString());
holder.text2.setText(values.get(position).toString());
return convertView;
}
/* class ViewHolder */
private class ViewHolder
{
/* text1:資訊名稱
* text2:資訊內容 */
TextView text1;
TextView text2;
}
}
[其他解释]
for(int i = 0; i < lv_qty.getCount(); i++)
{
//String str = lv_qty.getAdapter().getItem(i).toString();
//Toast.makeText(rv.this, str, Toast.LENGTH_LONG).show();
}
lv_qty.getAdapter().getItem(i).toString();这个可以看到每个item里面的textview和Editview的值 但是要去取Editview里的值就不知道用什么方法了在getItem后面就那几个方法 没有看到什么取id的 如果用 lv_qty.getItemAtPosition(i)来获得item 也没找到什么方法再去找里面的eidtview
能不能指点一下
[其他解释]
我之前也在做ListView相关的东西,每个Item中有个进度条组件,我是自己写了个Adapter,来生成Item的。
生成每个Item时,可以把你需要赋值的组件存在成员变量中,然后对外开放访问接口。
[其他解释]
请问这个getView取出来后我用
(EditText)((lv_qty.getAdapter().getView(1, null, null).findViewById(R.id.Erm_qty))来取 取出来的好像不对 是不是我哪儿写错了
也感谢楼上几位的方法 我试一下
[其他解释]
如果按照楼上的方法改写了自己的adapter
我如何获得EditText里输入的内容?
[其他解释]
ListView listView = this.getListView();
int count = listView.getChildCount();
for(int i = 0; i < count; i++){
RelativeLayout layout = (RelativeLayout)listView.getChildAt(i);
int c = layout.getChildCount();
for(int j = 0; j < c; j++){
View view = layout.getChildAt(j);
if(view instanceof EditText){
String str= ((EditText)view).getText();
break;
}
}
}
[其他解释]
学习了
------其他解决方案--------------------
9楼楼主,可否解释哈“ListView listView = this.getListView();”和“String str= ((EditText)view).getText();”行代码,顺便让我看看你getListView()方法,谢谢啦
[其他解释]
哦。。。懂了、、、
[其他解释]
楼主有没有解决呀?获得EditText里输入的内容时候我怎么老获取的是原先循环到listview中的数组,重新输入的取不到!
[其他解释]
9楼的方法比较坑爹,只能取到可见部分的
