从列表视图中的edittext获取数据

时间:2011-01-24 10:49:54

标签: android

我用textview&创建了一个列表使用holder的edittext ...看起来像

Textview Edittext

Textview Edittext

Textview Edittext

                       [button]

但我无法从每个Edittext&无论何时我向任何edittext数据添加数据都会自动交换到其他edittext我无法控制它。我需要的是将所有edittext数据(动态给出)传输到哈希表或其他东西,同时单击一个按钮。任何人都可以帮助我......实现它......协助提供示例代码......

这是我的src文件......

package org.me.androidapplication40;

import android.app.Activity;
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.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class customlistview extends Activity {

 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) {
 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);

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

 holder.text.setText(curr[position]);
 holder.text2.setText(country[position]);
holder.txt.setText("");
 return convertView;
 }

 public class ViewHolder {
 TextView text;
 TextView text2;
 EditText txt;
 }
 }

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

 }

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

}

listview.xml

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

main.xml中

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

2 个答案:

答案 0 :(得分:0)

你可以做的一种方法是在hashmap或任何集合中获取整个视图持有者并获取位置并在需要时进行检索。

答案 1 :(得分:0)

我认为你的问题类似于我在这里的问题:

Change ListView background - strange behaviour

我认为您缺少更新您的参考资料,如:

// we must update the object's reference
holder.data = getItem(position);

在这种情况下,项目在列表中,getItem(position);返回我实际想要在特定行中更新的对象。 listView开箱即用,可以回收视图,这意味着滚动时视图会消失,而视图会变得可见。为了显示正确的数据,您必须更新参考文献。

你知道我的意思吗?或者我应该以其他方式解释?

希望这有帮助!