日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于CheckBox和EditText在ListView里多布局的处理

發布時間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于CheckBox和EditText在ListView里多布局的处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于時間有限,自己覺得這些知識點,以后自己會用到,做些筆記方便自己查詢,也希望給遇到此類問題的一些人提供些幫助。

時間倉促,以后回頭做解釋,先把代碼展示出來,需要的可以借鑒下。

1、注冊清單里添加如下:

  android:windowSoftInputMode="adjustPan"

<activityandroid:name="com.pda.ui.repair.SeeCheckDetils_ActivityNew"android:windowSoftInputMode="adjustPan"android:screenOrientation="portrait"></activity>

臨時插入一點小知識

  android:windowSoftInputMode

各值的含義:

  【A】stateUnspecified:軟鍵盤的狀態并沒有指定,系統將選擇一個合適的狀態或依賴于主題的設置

  【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示

  【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏

  【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的

  【E】stateVisible:軟鍵盤通常是可見的

  【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態

  【G】adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示

  【H】adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間

  【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分

2、要展示的ListView布局如下:

android:descendantFocusability="afterDescendants" <ListView android:background="@color/subject_bg"android:descendantFocusability="afterDescendants"android:id="@+id/add_check_list"android:layout_width="match_parent"android:layout_height="match_parent"></ListView>

插入小知識點:

  beforeDescendants:viewgroup會優先其子類控件而獲取到焦點
  afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點
  blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點

3、適配器如下(建議直接放在調用適配器的地方):(重點

/*** @author MrFu適配器*/private class SeeCheckRepairAdapter extends BaseAdapter {private LayoutInflater mInflater;final int TYPE_1 = 1;final int TYPE_2 = 2;final int TYPE_3 = 3;private int index = -1;public SeeCheckRepairAdapter(Context context) {super();this.mInflater = LayoutInflater.from(context);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn tmrDynamicArr.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn tmrDynamicArr.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}// ===================== @Overridepublic int getItemViewType(int position) {return tmrDynamicArr.get(position).getOpertype();}@Overridepublic int getViewTypeCount() {if (tmrDynamicArr.size() == 0)return 1;elsereturn tmrDynamicArr.size();}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHolder1 holder1 = null;ViewHolder2 holder2 = null;ViewHolder3 holder3 = null;int type = getItemViewType(position);switch (type) {case TYPE_1:convertView = mInflater.inflate(R.layout.activity_check_a_style, parent, false);holder1 = new ViewHolder1();holder1.left_text = (TextView) convertView.findViewById(R.id.left_text1);holder1.right_cbx_routing = (CheckBox) convertView.findViewById(R.id.right_cbx_routing1);convertView.setTag(holder1);break;case TYPE_2:convertView = mInflater.inflate(R.layout.activity_check_b_style, parent, false);holder2 = new ViewHolder2();holder2.left_text = (TextView) convertView.findViewById(R.id.left_text2);holder2.right_cbx_routing = (CheckBox) convertView.findViewById(R.id.right_cbx_routing2);holder2.et_other = (EditText) convertView.findViewById(R.id.et_other2);convertView.setTag(holder2);break;case TYPE_3:convertView = mInflater.inflate(R.layout.activity_check_c_style, parent, false);holder3 = new ViewHolder3();holder3.left_text = (TextView) convertView.findViewById(R.id.left_text3);holder3.et_other = (EditText) convertView.findViewById(R.id.et_other3);convertView.setTag(holder3);break;}switch (type) {case TYPE_1:holder1 = (ViewHolder1) convertView.getTag();holder1.right_cbx_routing.setTag(position);break;case TYPE_2:holder2 = (ViewHolder2) convertView.getTag();holder2.right_cbx_routing.setTag(position);holder2.et_other.setTag(position); break;case TYPE_3:holder3 = (ViewHolder3) convertView.getTag();holder3.et_other.setTag(position);break;}// 設置資源switch (type) {case TYPE_1:if (TextUtils.isEmpty(tmrDynamicArr.get(position).getShowvalue())) {holder1.left_text.setText("");} else {holder1.left_text.setText(tmrDynamicArr.get(position).getShowvalue());}if(tmrDynamicArr.get(position).getOperonoff().equals("Y")){holder1.right_cbx_routing.setChecked(true);}else{holder1.right_cbx_routing.setChecked(false);}holder1.right_cbx_routing.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){tmrDynamicArr.get(position).setOperonoff("Y");}else{tmrDynamicArr.get(position).setOperonoff("N");}}});break;case TYPE_2:if (TextUtils.isEmpty(tmrDynamicArr.get(position).getShowvalue())) {holder2.left_text.setText("");} else {holder2.left_text.setText(tmrDynamicArr.get(position).getShowvalue());}if(tmrDynamicArr.get(position).getOperonoff().equals("Y")){holder2.right_cbx_routing.setChecked(true);}else{holder2.right_cbx_routing.setChecked(false);}holder2.right_cbx_routing.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){tmrDynamicArr.get(position).setOperonoff("Y");}else{tmrDynamicArr.get(position).setOperonoff("N");}}});holder2.et_other.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_UP) {index = (Integer) v.getTag();}return false;}});if(tmrDynamicArr.get(position) != null){ holder2.et_other.setText(tmrDynamicArr.get(position).getOpercontent()); } holder2.et_other.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void afterTextChanged(Editable s) { // 將editText中改變的值保存 tmrDynamicArr.get(position).setOpercontent(s.toString());}});if (index == position) {// 如果當前的行下標和點擊事件中保存的index一致,手動為EditText設置焦點。 holder2.et_other.requestFocus();} else {holder2.et_other.clearFocus();}break;case TYPE_3:if (TextUtils.isEmpty(tmrDynamicArr.get(position).getShowvalue())) {holder3.left_text.setText("");} else {holder3.left_text.setText(tmrDynamicArr.get(position).getShowvalue());}holder3.et_other.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_UP) {index = (Integer) v.getTag();}return false;}});if(tmrDynamicArr.get(position) != null){ holder3.et_other.setText(tmrDynamicArr.get(position).getOpercontent()); } holder3.et_other.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void afterTextChanged(Editable s) { // 將editText中改變的值保存 tmrDynamicArr.get(position).setOpercontent(s.toString());}});if (index == position) {// 如果當前的行下標和點擊事件中保存的index一致,手動為EditText設置焦點。 holder3.et_other.requestFocus();} else {holder3.et_other.clearFocus();}break;}return convertView;}public class ViewHolder1 {TextView left_text;CheckBox right_cbx_routing;}public class ViewHolder2 {TextView left_text;CheckBox right_cbx_routing;EditText et_other;}public class ViewHolder3 {TextView left_text;EditText et_other;}}

主要通過存儲到操作數據保存狀態以便以后面存儲到數據庫里。

里面用了三個布局,方便以后使用在這里添加布局:

R.layout.activity_check_a_style

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/left_text1"style="@style/comm_blue_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:layout_margin="10dp"android:text="這里是測試文本aaaaaaa"/><CheckBoxandroid:id="@+id/right_cbx_routing1"style="@style/comm_checkbox_repair" /></RelativeLayout><include layout="@layout/comm_divider" /></LinearLayout>

R.layout.activity_check_b_style

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/left_text2"style="@style/comm_blue_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:layout_margin="10dp"android:text="這里是測試文本bbbbbbb" /><CheckBoxandroid:id="@+id/right_cbx_routing2"style="@style/comm_checkbox_repair" /></RelativeLayout><include layout="@layout/comm_divider" /><EditTextandroid:id="@+id/et_other2"style="@style/check_right_text"android:textCursorDrawable="@drawable/color_cursor" /><include layout="@layout/comm_divider" /></LinearLayout>

R.layout.activity_check_c_style

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/left_text3"style="@style/comm_blue_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:layout_margin="10dp"android:text="這里是測試文本ccccccccc" /></RelativeLayout><include layout="@layout/comm_divider" /><EditTextandroid:id="@+id/et_other3"style="@style/check_right_text"android:textCursorDrawable="@drawable/color_cursor" /><include layout="@layout/comm_divider" /> </LinearLayout>

調用方式:

SeeCheckRepairAdapter adapter = new SeeCheckRepairAdapter(SeeCheckDetils_ActivityNew.this);add_check_list = (ListView) findViewById(R.id.add_check_list);add_check_list.setAdapter(adapter);

最后把更改和操作的數據存儲到數據庫里

/*** 這是保存操作數據*/if(tmrDynamicArr!=null&&tmrDynamicArr.size()>0){for(int i = 0;i<tmrDynamicArr.size();i++){try {dynamic_dao.update(tmrDynamicArr.get(i));} catch (SQLException e) {e.printStackTrace();}}}

?

下面這是我從數據庫里讀取數據和創建數據(ormlite方式,閱讀者不用看)

Map<String, Object> where_dynamic=new HashMap<String, Object>();where_dynamic.put("taskid", atm_bean.getTaskid()+"");where_dynamic.put("atmid", atm_bean.getAtmid()+"");where_dynamic.put("pdatype", 1);//0為加鈔組,1為維修組where_dynamic.put("pagetype", "data1");//頁面類型,data1為頁面1(巡檢),data2為機具操作結束的頁面List<TmrDynamicCheckVo> dynamics = dynamic_dao.quaryForNeed(where_dynamic);if(dynamics!=null&&dynamics.size()>0){for(int i = 0;i<dynamics.size();i++){tmrDynamicArr.add(dynamics.get(i));}}else{TmrDynamicCheckVo testDataVo1 = new TmrDynamicCheckVo(atm_bean.getTaskid()+"", atm_bean.getAtmid()+"", 2, "1004", "流水打印機", "Y", "");// 流水打印機TmrDynamicCheckVo testDataVo2 = new TmrDynamicCheckVo(atm_bean.getTaskid()+"", atm_bean.getAtmid()+"", 2, "1005", "憑條打印機", "Y", "");// 憑條打印機TmrDynamicCheckVo testDataVo3 = new TmrDynamicCheckVo(atm_bean.getTaskid()+"", atm_bean.getAtmid()+"", 2, "1006", "通訊線路", "Y", "");TmrDynamicCheckVo testDataVo4 = new TmrDynamicCheckVo(atm_bean.getTaskid()+"", atm_bean.getAtmid()+"", 2, "1007", "溫度", "Y", "");TmrDynamicCheckVo testDataVo5 = new TmrDynamicCheckVo(atm_bean.getTaskid()+"", atm_bean.getAtmid()+"", 2, "1008", "UPS", "Y", "");TmrDynamicCheckVo testDataVo6 = new TmrDynamicCheckVo(atm_bean.getTaskid()+"", atm_bean.getAtmid()+"", 2, "1009", "廢鈔", "Y", ""); dynamic_dao.create(testDataVo1);dynamic_dao.create(testDataVo2);dynamic_dao.create(testDataVo3);dynamic_dao.create(testDataVo4);dynamic_dao.create(testDataVo5);dynamic_dao.create(testDataVo6);List<TmrDynamicCheckVo> dynamics1 = dynamic_dao.quaryForDetail(where_dynamic);if(dynamics1!=null&&dynamics1.size()>0){for(int i = 0;i<dynamics1.size();i++){tmrDynamicArr.add(dynamics1.get(i));}}

?

?

?

?

?

?

以后慢慢作解釋。

?

轉載于:https://www.cnblogs.com/bxfx111/p/4686384.html

總結

以上是生活随笔為你收集整理的关于CheckBox和EditText在ListView里多布局的处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。