ListView中EditText的数据加载错乱的问题
2013-08-10 14:45
267 查看
我在ListView中用BaseAdapter的getView()方法加载适配器,每个Item里有一个TextView和一个EditText,当我在第一个EditText里面输入数据,比如1234时,同时会在第八个EditText中也出现1234,同样的,如果我在第二个EditText中输入1234,那么在第九个EditText中就会出现1234,以此类推,不知道是怎么回事,下面有解决方法和原因
ListView 为了避免浪费内存 只是用了 一屏幕的 ListItem
所以每次 getView 的 时候会 使用 使用这一屏幕中的 其中一个 item
所以在adapter 的getView方法中 必须每次重新设置数据
像textView CheckBox 等变化 的 状态必须用一个数组保存
直接贴代码:
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中使用checkbox滑动或者加载更多数据错乱问题解决方案
- 关于 android listview 加载数据错位(错乱)问题
- gridview中使用CheckBox,解决CheckBox数据加载错乱问题
- 如何解决ListView中EditText的数据加载错乱的问题?
- ViewPager数据加载错乱的问题
- ViewPager数据加载错乱的问题
- ViewPager 懒加载 导致的数据错乱问题
- Swiper 动态加载数据没有变化问题
- 使用easyUI的treegrid的时候,出现后台返回数据为空时,treegrid加载了前面请求到的数据到页面上的问题
- JqueryEasyUI 解决IE下加载时页面错乱的问题 分类: JavaScript JqueryEasyUI 2014-09-20 09:50 546人阅读 评论(1) 收藏
- Tablayout+viewpager+Fragment的数据加载问题
- python爬虫爬取简单的动态数据-异步加载问题
- 使用easyui-combobox的data属性加载定义好在*.js文件中的JSON数据的问题
- IE6下动态加载JS数据不执行的诡异问题
- spring 返回 JSON乱码问题的解决 及个人 动态加载ztree树结构的json数据代码
- Flex用HTTPService时加载xml或其它数据不自动刷新问题的解决方案
- 解决ListView异步加载图片错乱问题 .
- UIScrollerView加载大量数据内存爆满的问题
- ScrollView加载里面的数据出现下滑(可能是焦点问题)
- extjs JsonStore加载数据,Combobox只显示最后一项值问题