我在ListView中用BaseAdapter的getView()方法加载适配器,每个Item里有一个TextView和一个EditText,当我在第一个EditText里面输入数据,比如1234时,同时会在第八个EditText中也出现1234,同样的,如果我在第二个EditText中输入1234,那么在第九个EditText中就会出现1234,以此类推,不知道是怎么回事,下面有解决方法和原因

ListView 为了避免浪费内存 只是用了 一屏幕的 ListItem

所以每次 getView 的 时候会 使用 使用这一屏幕中的 其中一个 item

所以在adapter 的getView方法中 必须每次重新设置数据
像textView  CheckBox 等变化 的 状态必须用一个数组保存

直接贴代码:

public class ListTestActivity extends Activity
{
ListView mListView;
Map<Integer, String> mMapContent; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main); mMapContent = new HashMap<Integer, String>();
mListView = (ListView)findViewById(R.id.listview);
mListView.setAdapter(new MyListAdapter(this, 20));
} class MyListAdapter extends BaseAdapter
{
int mCount;
Context mContext; public MyListAdapter(Context context, int count)
{
mCount = count;
mContext = context;
} public int getCount()
{
return mCount;
} public Object getItem(int arg0)
{
return arg0;
} public long getItemId(int arg0)
{
return arg0;
} public View getView(int position, View convertView, ViewGroup arg2)
{
ViewHold holder = null;
if(convertView == null)
{
convertView = LinearLayout.inflate(mContext, R.layout.list_item, null);
holder = new ViewHold(convertView);
convertView.setTag(holder);
}
else
{
holder = (ViewHold)convertView.getTag();
} holder.position = position;
holder.textView.setText("listitem" + position + ":");
holder.editText.setText(mMapContent.get(position));//Integer.valueOf(position) return convertView;
} class ViewHold
{
TextView textView;
EditText editText;
int position; public ViewHold(View v)
{
textView = (TextView)v.findViewById(R.id.textview);
editText = (EditText)v.findViewById(R.id.edittext); editText.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence s, int start, int before, int count)
{
} public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
} public void afterTextChanged(Editable s)
{
mMapContent.put(position, s.toString());
}
});
}
}
}
}

ListView中EditText的数据加载错乱的问题的更多相关文章

  1. 解决网页中Waiting (TTFB)数据加载过慢的问题

    解决网页中Waiting (TTFB)数据加载过慢的问题 最近做了一个网页,在本地测试良好,数据可以得到很快的反馈,但是当部署到云端Linux上时候,就会出现加载缓慢的问题.本地测试,得到数据大概3s ...

  2. 如何让在Html中特殊字符被数据加载时对于html标签的自动转义 补充

    1.将此过滤器添加到ng-bind-html所绑定的数据中,便实现了在数据加载时对于html标签的自动转义. <div ng-repeat="item in list" &g ...

  3. 简单的ListView中item图片异步加载

    前言:     在android开发当中,从目标地址获取图片往往都是采用异步加载的方法.当完全加载完图片后在进行显示,也有些是直接将加载的图片一点一点的显示出来. 这两个区别只是对流的处理不同而已.现 ...

  4. Android新浪微博客户端(七)——ListView中的图片异步加载、缓存

    原文出自:方杰|http://fangjie.info/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到git ...

  5. ScrollView嵌套ListView,GridView数据加载不全问题的解决

    我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...

  6. JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)

    在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...

  7. 浅谈Entity Framework中的数据加载方式

    如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...

  8. iOS App中数据加载的6种方式

    我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...

  9. APP中数据加载的6种方式-b

    我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...

随机推荐

  1. hdu 4198 Quick out of the Harbour

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4198 Quick out of the Harbour Description Captain Cle ...

  2. Windows Phone中In-App Purchase应用内购买

    前言       应用内购买(In-App Purchase)对于开发者来说绝对是一个非常重要的功能,它提供了一个便捷的入口供用户来购买付费.在IAP盛行之前的游戏运营商一般都是通过接入第三方支付入口 ...

  3. chmod命令用法

    指令名称 : chmod  使用权限 : 所有使用者  使用方式 : chmod [-cfvR] [--help] [--version] mode file...  说明 : Linux/Unix ...

  4. shell 与用户交互

    bash shell如何获取命令行参数(添加到命令后的数据).命令行选项(确定命令行为的英文字母).键盘输入数据? 操作命令行参数 1 读取参数 bash shell用位置参数变量(positiona ...

  5. EntityFramwork(1) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542

    1.创建应用程序 简单起见,我们将构建一个使用 Code First 执行数据访问的基本控制台应用程序. 打开 Visual Studio "文件"->"新建&qu ...

  6. 005--VS C++ 加载位图

    //全局变量 HDC mdc; //--------------------------------------------InitInstance() 函数--------------------- ...

  7. Web中Listener的创建

    使用Listener只需要两个步骤: 定义Listener实现类. 通过Annotation或在web.xml文件中配置Listener 实现Listener类 监听不同Web事件的监听器不相同,常用 ...

  8. Convert Sorted Array to Binary Search Tree

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  9. linux查看文件权限

    ls -l abc (abc是文件名) 那么就会出现相类似的信息,主要都是这些:drwxr-xr-x 一共有10位数 其中: 最前面那个 d 代表的是类型 目录文件 中间那三个 rw- 代表的是所有者 ...

  10. 在Mac中如何显示和隐藏文件

    1.显示Mac隐藏文件的命令: 在终端中输入"defaults write com.apple.finder AppleShowAllFiles YES":  鼠标单击窗口左上角 ...