首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

动态生成UI 数据列表项(处置数据上报)1

2012-07-29 
动态生成UI数据列表项(处理数据上报)1?核心思路:ScrollView+LinearLayout?为什么不采用自定义Listview:存

动态生成UI 数据列表项(处理数据上报)1


动态生成UI  数据列表项(处置数据上报)1

?

核心思路:ScrollView+LinearLayout


动态生成UI  数据列表项(处置数据上报)1
?为什么不采用自定义Listview:

存在一些暂时未解决的问题,比较麻烦:

1.屏幕内容滚动时会调用ListView的Adapter的getView()重新产生View,这就要求及时保存EditText中的数据,不然会丢失,使用了Listener监听EditText的TextChange,但是发现Listener经常不被调用,跟踪发现在getView()中创建的Edittext和ListView中用来显示的EditText句柄不一样 。
2.再次就是当软键盘弹出后,焦点从当前输入的EditText丢失,移动了第一个EditText上,屏幕直接来个大滚屏。。。根本没法使用。

?

核心代码:

?

// 代码生成控件方法private LinearLayout newView(String category, String format, int id) {LinearLayout linearLayout = new LinearLayout(this);linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));linearLayout.setOrientation(LinearLayout.HORIZONTAL);linearLayout.setGravity(Gravity.CENTER);// 类别TextView category_txt = new TextView(this);// 创建TextextViewiew// category_txt.setPadding(10, 0, 0, 0);category_txt.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1));category_txt.setText(category); // 设置TextextViewiew显示的内容// category_txt.setWidth(100);category_txt.setSingleLine();category_txt.setTextSize(17);category_txt.setGravity(Gravity.CENTER);linearLayout.addView(category_txt);// 将textView添加到线性布局中// 规格TextView format_txt = new TextView(this);// 创建TextextViewiew// format_txt.setPadding(10, 0, 0, 0);format_txt.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1));format_txt.setText(format); // 设置TextextViewiew显示的内容format_txt.setTextSize(17);format_txt.setGravity(Gravity.CENTER);// format_txt.setWidth(50);linearLayout.addView(format_txt);// 将textView添加到线性布局中// 价格EditText price_editText = new EditText(this);// price_editText.setPadding(10, 0, 0, 0);price_editText.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1));price_editText.setGravity(Gravity.LEFT);price_editText.setHeight(10);price_editText.setWidth(10);// price_editText.setWidth(80);price_editText.setSingleLine();price_editText.setTextSize(17);// price_editText.setText(String.valueOf(id));// 设置测试价格数据// price_editText.setInputType(0);linearLayout.addView(price_editText);// 将textView添加到线性布局中return linearLayout;}

?

?

private LinearLayout newView(String category, String format, int id) {LinearLayout linearLayout = new LinearLayout(this);// linearLayout.setId(id);linearLayout.setLayoutParams(params_wrapcontent);linearLayout.setOrientation(LinearLayout.HORIZONTAL);linearLayout.setGravity(Gravity.CENTER);// 类别TextView category_txt = new TextView(this);// 创建TextextViewiewcategory_txt.setPadding(10, 0, 0, 0);category_txt.setLayoutParams(params_wrapcontent);category_txt.setText(category); // 设置TextextViewiew显示的内容category_txt.setWidth(100);category_txt.setSingleLine();linearLayout.addView(category_txt);// 将textView添加到线性布局中// 规格TextView format_txt = new TextView(this);// 创建TextextViewiewformat_txt.setPadding(10, 0, 0, 0);format_txt.setLayoutParams(params_wrapcontent);format_txt.setText(format); // 设置TextextViewiew显示的内容format_txt.setWidth(50);linearLayout.addView(format_txt);// 将textView添加到线性布局中// 价格EditText price_editText = new EditText(this);price_editText.setId(id);price_editText.setPadding(10, 0, 0, 0);price_editText.setLayoutParams(params_wrapcontent);price_editText.setWidth(80);price_editText.setSingleLine();price_editText.setText(String.valueOf(id));// price_editText.setText("500ml"); // 设置TextextViewiew显示的内容linearLayout.addView(price_editText);// 将textView添加到线性布局中return linearLayout;}

?

通过InFlate方式:

// 代码生成控件方法private LinearLayout newView(String category, String format, int id) {LayoutInflater inflater = LayoutInflater.from(ReportPrice.this);// 渲染器LinearLayout view = (LinearLayout)inflater.inflate(R.layout.reportprice_item, null);TextView variety_text = (TextView) view.findViewById(R.id.variety_text);variety_text.setText(category); // 设置TextextViewiew显示的内容TextView format_text = (TextView) view.findViewById(R.id.format_text);format_text.setText(format);EditText price_editText = (EditText) view.findViewById(R.id.price_et);price_editText.setText(String.valueOf(id));}

?

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal" android:layout_width="fill_parent"android:layout_gravity="center" android:layout_height="wrap_content"><TextView android:layout_height="wrap_content"android:layout_width="fill_parent" android:id="@+id/variety_text"android:textSize="17sp" android:gravity="center"android:layout_gravity="center" android:layout_weight="1" /><TextView android:layout_height="fill_parent" android:id="@+id/format_text"android:layout_gravity="center" android:textSize="17sp"android:gravity="center" android:layout_weight="1"android:layout_width="fill_parent" /><EditText android:layout_height="wrap_content"android:inputType="numberDecimal" android:background="@drawable/username_bg"android:layout_width="fill_parent" android:id="@+id/price_et"android:layout_gravity="center" android:textSize="15dp"android:maxWidth="50dp"android:maxLength="10" android:gravity="center" android:layout_weight="1" /></LinearLayout>

?
?

                                                                  // 通过设置ID获取EditText的值// for (int i = 0; i < studentModels.size(); i++) {// EditText editText = (EditText) linearLayout// .findViewById(i);// Map<String, Object> map = new HashMap<String,// Object>();// map.put("price", editText.getText().toString());// price_list.add(map);// studentModels.get(i).setSgrade(editText.getText().toString());// System.out.println(studentModels.get(i).getString());// }// 通过getChildAtfor (int i = 0; i < listLayouts.size(); i++) {LinearLayout llLayout = (LinearLayout) linearLayout.getChildAt(i);EditText editText = (EditText) llLayout.getChildAt(2);studentModels.get(i).setSgrade(editText.getText().toString());System.out.println(studentModels.get(i).getString());}

?

热点排行