mTypeElevenView.findViewById(R.id.item_eleven_value_img_photo).setOnClickListener(this);
mTypeElevenView.findViewById(R.id.item_eleven_value_img_folder).setOnClickListener(this);
mTypeElevenKeyTv.setText(formDetail.getCaption());
mTypeElevenView.setTag(mType);
linearLayout.addView(mTypeElevenView);
} else if (mType == ViewTypeUtil.item_view_type_twelve) {// 图片
mTypeTwelveView = LayoutInflater.from(this).inflate(R.layout.item_type_twelve, null);
mTypeTwelveKeyTv = (TextView) mTypeTwelveView.findViewById(R.id.tv_type_twelve_key);
mTypeTwelveValueTv = (TextView) mTypeTwelveView.findViewById(R.id.item_twelve_value_path);
mTypeTwelveTakePhoto = mTypeTwelveView.findViewById(R.id.item_twelve_value_img_photo);
mTypeTwelveSelectPhoto = mTypeTwelveView.findViewById(R.id.item_twelve_value_img_folder);
if (mIntentFrom == FLAG_SHOW) {
mTypeTwelveTakePhoto.setEnabled(false);
mTypeTwelveSelectPhoto.setEnabled(false);
} else {
mTypeTwelveTakePhoto.setOnClickListener(this);
mTypeTwelveSelectPhoto.setOnClickListener(this);
}
mTypeTwelveValueTv.setOnClickListener(this);
mPhotoPath = formDetail.getuValue();
mTypeTwelveKeyTv.setText(formDetail.getCaption());
mTypeTwelveValueTv.setText(mPhotoPath.substring(mPhotoPath.lastIndexOf(“/”) + 1));
mTypeTwelveValueTv.setTag(formDetail.getTableDetailID());
mTypeTwelveTakePhoto.setTag(formDetail.getTableDetailID());
mTypeTwelveSelectPhoto.setTag(formDetail.getTableDetailID());
mTypeTwelveView.setTag(mType);
linearLayout.addView(mTypeTwelveView);
} else if (mType == ViewTypeUtil.item_view_type_thirteen) {// 组
final String detailId = formDetail.getTableDetailID();
mTypeThirteenView = LayoutInflater.from(context).inflate(R.layout.item_type_thirteen, null);
mTypeThirteenKeyTv = (TextView) mTypeThirteenView.findViewById(R.id.tv_type_thirteen_key);
mTypeThirteenKeyTv.setText(formDetail.getCaption());
mTypeThirteenLinearLayout = (LinearLayout) mTypeThirteenView.findViewById(R.id.ly_type_thirteen);
mTypeThirteenLinearLayout.setTag(detailId);
mTypeThirteenView.setTag(mType);
linearLayout.addView(mTypeThirteenView);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void… params) {
if (mIntentFrom == FLAG_SHOW || mIntentFrom == FLAG_UPDATE) {// 查看,修改
mFormDetailMap = GdjtUserDataDBOperation.getInstance().getChildListDetailValueData(mUTableID, detailId);
} else {// 添加
mFormZuDetailChildList = GdjtFormDBOperation.getInstance().getChildListDetailData(detailId);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (mIntentFrom == FLAG_SHOW || mIntentFrom == FLAG_UPDATE ) {
ShowChildView();
} else {
AddZuChildView();
}
// linearLayout.refreshDrawableState();
}
}.execute();
} else if (mType == ViewTypeUtil.item_view_type_fourteen) {// 日期时间格式
mTypeFourteenView = LayoutInflater.from(this).inflate(R.layout.item_type_three, null);
mFourteenDateKeyTv = (TextView) mTypeFourteenView.findViewById(R.id.tv_test_date_key);
mFourteenDateValueEt = (EditText) mTypeFourteenView.findViewById(R.id.et_test_date_value);
mFourteenDateValueEt.setTag(formDetail.getTableDetailID());
mFourteenDateKeyTv.setText(formDetail.getCaption());
if (mIntentFrom == FLAG_SHOW) {
mFourteenDateValueEt.setEnabled(false);
}
if (!TextUtils.isEmpty(formDetail.getuValue())) {
mFourteenDateValueEt.setText(formDetail.getuValue());
} else {
mFourteenDateValueEt.setText(TimeUtil.getCurDateStr());
}
mFourteenDateValueEt.setTag(formDetail.getTableDetailID());
mFourteenDateValueEt.setOnClickListener(this);
mTypeFourteenView.setTag(mType);
linearLayout.addView(mTypeFourteenView);
} else if (mType == ViewTypeUtil.item_view_type_fifteen) {// 时间格式
mTypeFifteenView = LayoutInflater.from(this).inflate(R.layout.item_type_three, null);
mFifteenDateKeyTv = (TextView) mTypeFifteenView.findViewById(R.id.tv_test_date_key);
mFifteenDateValueEt = (EditText) mTypeFifteenView.findViewById(R.id.et_test_date_value);
mFifteenDateValueEt.setTag(formDetail.getTableDetailID());
mFifteenDateKeyTv.setText(formDetail.getCaption());
if (mIntentFrom == FLAG_SHOW) {
mFifteenDateValueEt.setEnabled(false);
}
if (!TextUtils.isEmpty(formDetail.getuValue())) {
mFifteenDateValueEt.setText(formDetail.getuValue());
} else {
mFifteenDateValueEt.setText(TimeUtil.getStringTimeShort());
}
mFifteenDateValueEt.setTag(formDetail.getTableDetailID());
mFifteenDateValueEt.setOnClickListener(this);
mTypeFifteenView.setTag(mType);
linearLayout.addView(mTypeFifteenView);
} else if (mType == ViewTypeUtil.item_view_type_sixteen) {// 标签
mTypeSixteenView = LayoutInflater.from(this).inflate(R.layout.item_type_zero, null);
mItemSixteenFieldTv = (TextView) mTypeSixteenView.findViewById(R.id.item_zero_field_tv);
mItemSixteenValueEt = (EditText) mTypeSixteenView.findViewById(R.id.item_zero_value_et);
mItemSixteenValueEt.setEnabled(false);
mItemSixteenValueEt.setText(formDetail.getuValue());
mItemSixteenValueEt.setTag(formDetail.getTableDetailID());
mItemSixteenFieldTv.setText(formDetail.getCaption());
mTypeSixteenView.setTag(mType);
linearLayout.addView(mTypeSixteenView);
}
}
}
3.处理复杂控件
其实这个里面的复杂控件就两种,一种是列表 一种是组
给简单大家解释一下列表是什么意思: 大家看有的表格里面是多行多列的,意味着同样的字段数据 可能要添写多条。
那么对应在app里面 就是 这些字段放到了一起 做成了一个 组。 那么这些字段添加多条 就是 在组后面放了一个 + 号
点击+号 这个组 就增加一组 。所以这个带+号的字段 就是 列表字段。
组和 列表 处理起来相对来说非常麻烦。
1).子项数据获取
2).布局嵌套
3).点击事件单独处理
4)保存数据独立拼接
具体这些问题,我就不一一展开说了。大家倘若有做的,具体做的时候自然会体会到。
4.处理点击事件
界面拼接完成后 ,要处理控件里面的点击事件。做的时候就会发现 倘若界面出现同一个item布局 ,布局里面包含点击事件 ,正常给控件设置点击事件,会发现 点击控件的时候无法区分开每个点击事件
所以处理点击事件的时候:原理 就是先循环整体的大布局 ,找到里面的每一项小布局,然后单独处理每一项小布局里面的控件。
这样才能保证点击事件没有问题。
代码贴一下:
@Override
public void onClick(View v) {
if (v.getId() == R.id.content_iv) {// 范例
} else if (v.getId() == R.id.voice_iv) {// 语音
for (int i = 0; i < mMainView.getChildCount(); i++) {
int viewTag = (int) mMainView.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_two) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
mVoice = new VoiceToWord(this, editText);
mVoice.GetWordFromVoice();
}
} else if (viewTag == ViewTypeUtil.item_view_type_thirteen || viewTag == ViewTypeUtil.item_view_type_ten) {
LinearLayout l = (LinearLayout) ((LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0)).getChildAt(1);
for (int j = 0; j < l.getChildCount(); j++) {
LinearLayout l_add = (LinearLayout) ((LinearLayout) l.getChildAt(j));
for (int k = 0; k < l_add.getChildCount(); k++) {
int viewTag_child = (int) l_add.getChildAt(k).getTag();
if (viewTag_child == ViewTypeUtil.item_view_type_two) {
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(k)).getChildAt(0);
EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
mVoice = new VoiceToWord(this, editText);
mVoice.GetWordFromVoice();
}
}
}
}
}
}
} else if (v.getId() == R.id.special_iv) {// 特殊字符
for (int i = 0; i < mMainView.getChildCount(); i++) {
int viewTag = (int) mMainView.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_two) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
mSpecialdialog = new SpecialWordsDialog(context, editText);
}
} else if (viewTag == ViewTypeUtil.item_view_type_thirteen || viewTag == ViewTypeUtil.item_view_type_ten) {
LinearLayout l = (LinearLayout) ((LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0)).getChildAt(1);
for (int j = 0; j < l.getChildCount(); j++) {
LinearLayout l_add = (LinearLayout) ((LinearLayout) l.getChildAt(j));
for (int k = 0; k < l_add.getChildCount(); k++) {
int viewTag_child = (int) l_add.getChildAt(k).getTag();
if (viewTag_child == ViewTypeUtil.item_view_type_two) {
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(k)).getChildAt(0);
EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
mSpecialdialog = new SpecialWordsDialog(context, editText);
}
}
}
}
}
}
} else if (v.getId() == R.id.et_test_date_value) {// 时间选择
for (int i = 0; i < mMainView.getChildCount(); i++) {
int viewTag = (int) mMainView.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_three) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
DlgUtil.showDateTimePickerDlgByType(this, editText, 1);
}
} else if (viewTag == ViewTypeUtil.item_view_type_fourteen) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
DlgUtil.showDateTimePickerDlg(this, editText);
}
} else if (viewTag == ViewTypeUtil.item_view_type_fifteen) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
DlgUtil.showDateTimePickerDlgByType(this, editText, 2);
}
} else if (viewTag == ViewTypeUtil.item_view_type_thirteen || viewTag == ViewTypeUtil.item_view_type_ten) {
LinearLayout l = (LinearLayout) ((LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0)).getChildAt(1);
for (int j = 0; j < l.getChildCount(); j++) {
LinearLayout l_add = (LinearLayout) ((LinearLayout) l.getChildAt(j));
for (int k = 0; k < l_add.getChildCount(); k++) {
int viewTag_child = (int) l_add.getChildAt(k).getTag();
if (viewTag_child == ViewTypeUtil.item_view_type_three) {
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
DlgUtil.showDateTimePickerDlgByType(this, editText, 1);
}
} else if (viewTag_child == ViewTypeUtil.item_view_type_fourteen) {
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
DlgUtil.showDateTimePickerDlg(this, editText);
}
} else if (viewTag_child == ViewTypeUtil.item_view_type_fifteen) {
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(i)).getChildAt(0);
EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag().equals(editText.getTag())) {
DlgUtil.showDateTimePickerDlgByType(this, editText, 2);
}
}
}
}
}
}
} else if (v.getId() == R.id.et_select_value) {
for (int i = 0; i < mMainView.getChildCount(); i++) {
int viewTag = (int) mMainView.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_five) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
final EditText editText = (EditText) l.getChildAt(1);
if (v.getTag(R.id.select_view_detial_id).equals(editText.getTag(R.id.select_view_detial_id))) {
int position = (int) editText.getTag(R.id.select_view_position);
mDataList.clear();
List dicList = mFormDetailList.get(position).dicBeanList;
for (DicBean dicBean : dicList) {
mDataList.add(dicBean.getDicName());
}
CusSpinerAdapter mAdapter = new CusSpinerAdapter(this);
mAdapter.refreshData(mDataList, 0);
View contentView = LayoutInflater.from(context).inflate(R.layout.common_form_view, null);
SpinerPopWindow mSpinerPopWindow = new SpinerPopWindow(this, R.layout.spiner_window_layout, true);
mSpinerPopWindow.setAdatper(mAdapter);
mSpinerPopWindow.setItemListener(new IOnItemSelectListener() {
@Override
public void onItemClick(int pos) {
if (pos >= 0 && pos <= mDataList.size()) {
String value = (String) mDataList.get(pos);
editText.setText(value.toString());
}
}
});
mSpinerPopWindow.setWidth(editText.getWidth());
int windowPos[] = PopMeasure.calculatePopWindowPos(editText, contentView);
int xOff = 25;// 可以自己调整偏移
windowPos[0] -= xOff;
mSpinerPopWindow.showAtLocation(v, Gravity.TOP | Gravity.START, windowPos[0], windowPos[1]);
}
}else if(viewTag == ViewTypeUtil.item_view_type_thirteen || viewTag == ViewTypeUtil.item_view_type_ten){
LinearLayout l = (LinearLayout) ((LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0)).getChildAt(1);
for (int j = 0; j < l.getChildCount(); j++) {
LinearLayout l_add = (LinearLayout) ((LinearLayout) l.getChildAt(j));//第二层布局layout
for (int k = 0; k < l_add.getChildCount(); k++) {
int viewTag_child = (int) l_add.getChildAt(k).getTag();
if(viewTag_child == ViewTypeUtil.item_view_type_five){
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(k)).getChildAt(0);//第三层每一项
final EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag(R.id.select_view_detial_id).equals(editText.getTag(R.id.select_view_detial_id))) {
int position = (int) editText.getTag(R.id.select_view_position);
mDataList.clear();
List dicList = new ArrayList<FormDetailBean.FormDetail.DicBean>();
if (viewTag == ViewTypeUtil.item_view_type_ten) {
dicList = mFormDetailChildList.get(position).dicBeanList;
}else if (viewTag == ViewTypeUtil.item_view_type_thirteen) {
dicList = mFormZuDetailChildList.get(position).dicBeanList;
}
for (DicBean dicBean : dicList) {
mDataList.add(dicBean.getDicName());
}
CusSpinerAdapter mAdapter = new CusSpinerAdapter(this);
mAdapter.refreshData(mDataList, 0);
View contentView = LayoutInflater.from(context).inflate(R.layout.common_form_view, null);
SpinerPopWindow mSpinerPopWindow = new SpinerPopWindow(this, R.layout.spiner_window_layout, true);
mSpinerPopWindow.setAdatper(mAdapter);
mSpinerPopWindow.setItemListener(new IOnItemSelectListener() {
@Override
public void onItemClick(int pos) {
if (pos >= 0 && pos <= mDataList.size()) {
String value = (String) mDataList.get(pos);
editText.setText(value.toString());
}
}
});
mSpinerPopWindow.setWidth(editText.getWidth());
int windowPos[] = PopMeasure.calculatePopWindowPos(editText, contentView);
int xOff = 200;// 可以自己调整偏移
windowPos[0] -= xOff;
mSpinerPopWindow.showAtLocation(v, Gravity.TOP | Gravity.START,windowPos[0], windowPos[1]);
}
}else if(viewTag_child == ViewTypeUtil.item_view_type_thirteen || viewTag_child == ViewTypeUtil.item_view_type_ten){
LinearLayout l3 = (LinearLayout) ((LinearLayout) ((LinearLayout) l_add.getChildAt(k)).getChildAt(0)).getChildAt(1);
for (int j3 = 0; j3 < l3.getChildCount(); j3++) {
LinearLayout l_add3 = (LinearLayout) ((LinearLayout) l3.getChildAt(j3));
for (int k3 = 0; k3 < l_add3.getChildCount(); k3++) {
int viewTag_child3 = (int) l_add3.getChildAt(k3).getTag();
if(viewTag_child3 == ViewTypeUtil.item_view_type_five){
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add3.getChildAt(k3)).getChildAt(0);
final EditText editText = (EditText) l_view.getChildAt(1);
if (v.getTag(R.id.select_view_detial_id).equals(editText.getTag(R.id.select_view_detial_id))) {
int position = (int) editText.getTag(R.id.select_view_position);
mDataList.clear();
List dicList = mFormZuDetailChildList.get(position).dicBeanList;
for (DicBean dicBean : dicList) {
mDataList.add(dicBean.getDicName());
}
CusSpinerAdapter mAdapter = new CusSpinerAdapter(this);
mAdapter.refreshData(mDataList, 0);
View contentView = LayoutInflater.from(context).inflate(R.layout.common_form_view, null);
SpinerPopWindow mSpinerPopWindow = new SpinerPopWindow(this, R.layout.spiner_window_layout, true);
mSpinerPopWindow.setAdatper(mAdapter);
mSpinerPopWindow.setItemListener(new IOnItemSelectListener() {
@Override
public void onItemClick(int pos) {
if (pos >= 0 && pos <= mDataList.size()) {
String value = (String) mDataList.get(pos);
editText.setText(value.toString());
}
}
});
mSpinerPopWindow.setWidth(editText.getWidth());
int windowPos[] = PopMeasure.calculatePopWindowPos(editText, contentView);
int xOff = 200;// 可以自己调整偏移
windowPos[0] -= xOff;
mSpinerPopWindow.showAtLocation(v, Gravity.TOP | Gravity.START,windowPos[0], windowPos[1]);
}
}
}
}
}
}
}
}
}
} else if (v.getId() == R.id.et_select_part_value) {
CheckPart_Monomer_Activity.actionStartForResult(context, mPartSelectValueEt.getText().toString(), “”, “”, monomerId, CheckPart_Monomer_Activity.class);
} else if (v.getId() == R.id.cbx_type_nine) {// 类型9 多选框意向
for (int i = 0; i < mMainView.getChildCount(); i++) {
int viewTag = (int) mMainView.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_nine) {
LinearLayout l = (LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0);
CheckBox checkBox = (CheckBox) l.getChildAt(1);
} else if (viewTag == ViewTypeUtil.item_view_type_thirteen || viewTag == ViewTypeUtil.item_view_type_ten) {
LinearLayout l = (LinearLayout) ((LinearLayout) ((LinearLayout) mMainView.getChildAt(i)).getChildAt(0)).getChildAt(1);
for (int j = 0; j < l.getChildCount(); j++) {
LinearLayout l_add = (LinearLayout) ((LinearLayout) l.getChildAt(j));
for (int k = 0; k < l_add.getChildCount(); k++) {
int viewTag_child = (int) l_add.getChildAt(k).getTag();
if (viewTag_child == ViewTypeUtil.item_view_type_nine) {
LinearLayout l_view = (LinearLayout) ((LinearLayout) l_add.getChildAt(k)).getChildAt(0);
CheckBox checkBox = (CheckBox) l_view.getChildAt(1);
}
}
}
}
}
} else if (v.getId() == R.id.item_eleven_value_et) {
for (int i = 0; i < mMainView.getChildCount(); i++) {
int viewTag = (int) mMainView.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_eleven) {
if (!TextUtils.isEmpty(mDrawingPath)) {
Intent intent = new Intent(CommonFormViewActivity.this, DrawingTypeActivity.class);
intent.putExtra(“drawingPath”, mDrawingPath);
intent.putExtra(“tableDetailID”, (String) v.getTag());
intent.putExtra(“intent_from”, FLAG_UPDATE);
if (mIntentFrom == FLAG_SHOW || mIntentFrom == FLAG_UPDATE) {// 查看,修改记录
intent.putExtra(“RecordId”, mUTableID);
}
startActivityForResult(intent, 11);
}
}
}
} else if (v.getId() == R.id.item_eleven_value_img_photo) {// 类型11图纸标准类型拍照按钮
mViewTypeFlag = ViewTypeUtil.item_view_type_eleven;
if (mCreateBmpFactory == null) {
mCreateBmpFactory = new CreateBmpFactory(CommonFormViewActivity.this);
}
mCreateBmpFactory.OpenCamera();
} else if (v.getId() == R.id.item_eleven_value_img_folder) {// 类型11图纸标准类型从图库选择
mViewTypeFlag = ViewTypeUtil.item_view_type_eleven;
FileSelect chosen = new FileSelect(CommonFormViewActivity.this);
chosen.setOnFileSelecteListener(new OnFileSelecteListener() {
@Override
public void onFileSelected(String filePath, String fileName) {
mDrawingPath = filePath;
mDrawingNameTv.setText(fileName);
Intent intent1 = new Intent(CommonFormViewActivity.this, DrawingTypeActivity.class);
intent1.putExtra(“drawingPath”, mDrawingPath);
intent1.putExtra(“tableDetailID”, (String) mDrawingNameTv.getTag());
intent1.putExtra(“intent_from”, FLAG_UPDATE);
if (mIntentFrom == FLAG_SHOW || mIntentFrom == FLAG_UPDATE) {// 查看,修改记录
intent1.putExtra(“RecordId”, mUTableID);
}
startActivityForResult(intent1, 11);
}
});
chosen.showChosenDialog();
} else if (v.getId() == R.id.item_twelve_value_path) {// 类型12 图片路径
} else if (v.getId() == R.id.item_twelve_value_img_photo) {// 类型12拍照
mViewTypeFlag = ViewTypeUtil.item_view_type_twelve;
mViewTag = v.getTag();
if (mCreateBmpFactory == null) {
mCreateBmpFactory = new CreateBmpFactory(CommonFormViewActivity.this);
}
mCreateBmpFactory.OpenCamera();
} else if (v.getId() == R.id.item_twelve_value_img_folder) {// 类型12
mViewTypeFlag = ViewTypeUtil.item_view_type_twelve;
mViewTag = v.getTag();
if (mCreateBmpFactory == null) {
mCreateBmpFactory = new CreateBmpFactory(CommonFormViewActivity.this);
}
mCreateBmpFactory.OpenGallery();
} else if (v.getId() == R.id.iv_type_ten_add) {
AddListChildView();
}
}
估计这么写看看都会头晕,因为这上面代码 里面除了处理正常的点击事件,还要处理列表和组 也就是 嵌套布局里面的点击事件。但是原理都是一样的。
就是循环布局找到 你点击的那个布局,那个控件… 如果是嵌套多级 就一级一级的找…
5.保存上传数据
我们这边保存处理的逻辑就是将界面上所有的数据都拼成一个JSONOject 里面套JSONArray和JSONObject ,反正就是根据自己的业务往里面套数据,这个数据组织起来稍微有一点点麻烦。
代码贴一下:
package com.jky.xmxtcommonlib.utils;
import org.json.JSONException;
import org.json.JSONObject;
import com.jky.xmxtcommonlib.R;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
/**
- Created by zlw on 2017/6/13.
*/
public class GetViewValueUtil {
// 表格输入框取值方法
public static JSONObject getTypeZeroValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
EditText editText = (EditText) linearLayout.getChildAt(1);
String id = editText.getTag() + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 单行输入框取值方法
public static JSONObject getTypeOneValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
EditText editText = (EditText) linearLayout.getChildAt(1);
String id = editText.getTag() + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 多行输入框取值方法
public static JSONObject getTypeTwoValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
EditText editText = (EditText) linearLayout.getChildAt(1);
String id = editText.getTag() + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 时间选择框取值方法
public static JSONObject getTypeThreeValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
if(linearLayout !=null){
EditText editText = (EditText) linearLayout.getChildAt(1);
if(editText!=null){
String id = editText.getTag() + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
}else{
JSONObject json= new JSONObject();
return json;
}
} else {
JSONObject json= new JSONObject();
return json;
}
return jsonObject;
}
// 数值输入框取值方法
public static JSONObject getTypeFourValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
EditText editText = (EditText) linearLayout.getChildAt(1);
String id = editText.getTag() + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 下拉选择框取值方法
public static JSONObject getTypeFiveValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
EditText editText = (EditText) linearLayout.getChildAt(1);
String id = editText.getTag(R.id.select_view_detial_id) + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 部位选择框取值方法
public static JSONObject getTypeSevenValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
EditText editText = (EditText) linearLayout.getChildAt(1);
String id = editText.getTag() + “”;
String str = editText.getText().toString().trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 单选框取值方法
public static JSONObject getTypeEightValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
RadioGroup radioGroup = (RadioGroup) linearLayout.getChildAt(1);
for (int i = 0; i < radioGroup.getChildCount(); i++) {
RadioButton radioButton = (RadioButton) radioGroup.getChildAt(i);
String str = (String) radioButton.getTag();
String detailId = str.split(“,”)[0];
String dicId = str.split(“,”)[1];
if (radioButton.isChecked()) {
jsonObject.put(detailId + “”, dicId);
}
}
return jsonObject;
}
// 多选框取值方法
public static JSONObject getTypeNineValue(LinearLayout linearLayout, JSONObject jsonObject) throws JSONException {
CheckBox checkBox = (CheckBox) linearLayout.getChildAt(1);
String value = “”;
String str = (String) checkBox.getTag();
if (checkBox.isChecked()) {
value = checkBox.getText().toString().trim();
String detailId = str.split(“,”)[0];
String dicId = str.split(“,”)[1];
jsonObject.put(detailId,dicId);
} else {
String detailId = str.split(“,”)[0];
jsonObject.put(detailId, “0”);
}
return jsonObject;
}
// 图纸类表格类型存值
public static JSONObject getTypeElevenValue(LinearLayout linearLayout,String path, JSONObject jsonObject) throws JSONException {
TextView extView = (TextView) linearLayout.getChildAt(1);
String id = extView.getTag() + “”;
String str = path.trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
// 照片类表格类型存值
public static JSONObject getTypeTwelveValue(LinearLayout linearLayout,String path, JSONObject jsonObject) throws JSONException {
TextView extView = (TextView) linearLayout.getChildAt(0);
String id = extView.getTag() + “”;
String str = path.trim();
jsonObject.put(id + “”, str);
return jsonObject;
}
}
/**
-
得到需要保存的json数据
-
@param linearLayout
-
@param isChildFlag
-
@param jsonKey
-
@throws JSONException
*/
private void getJsonInfo(LinearLayout linearLayout) throws JSONException {
for (int i = 0; i < linearLayout.getChildCount(); i++) {
int viewTag = (int) linearLayout.getChildAt(i).getTag();
if (viewTag == ViewTypeUtil.item_view_type_zero) {
LinearLayout l = (LinearLayout) ((LinearLayout) linearLayout.getChildAt(i)).getChildAt(0);
mJsonObject = GetViewValueUtil.getTypeZeroValue(l, mJsonObject);
} else if (viewTag == ViewTypeUtil.item_view_type_one) {
LinearLayout l = (LinearLayout) ((LinearLayout) linearLayout.getChildAt(i)).getChildAt(0);
mJsonObject = GetViewValueUtil.getTypeOneValue(l, mJsonObject);
} else if (viewTag == ViewTypeUtil.item_view_type_two) {
LinearLayout l = (LinearLayout) ((LinearLayout) linearLayout.getChildAt(i)).getChildAt(0);
mJsonObject = GetViewValueUtil.getTypeTwoValue(l, mJsonObject);
} else if (viewTag == ViewTypeUtil.item_view_type_three) {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://img-blog.csdnimg.cn/img_convert/860ed084df3bec5028d46e0cfc9cb1db.jpeg)
面试复习路线,梳理知识,提升储备
自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。
关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)
- 架构师筑基必备技能
- Android高级UI与FrameWork源码
- 360°全方面性能调优
- 解读开源框架设计思想
- NDK模块开发
- 微信小程序
- Hybrid 开发与Flutter
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
5283)]
[外链图片转存中…(img-x8DPPBjx-1712420495283)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://img-blog.csdnimg.cn/img_convert/860ed084df3bec5028d46e0cfc9cb1db.jpeg)
面试复习路线,梳理知识,提升储备
自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。
关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)
- 架构师筑基必备技能
- Android高级UI与FrameWork源码
- 360°全方面性能调优
- 解读开源框架设计思想
- NDK模块开发
- 微信小程序
- Hybrid 开发与Flutter
[外链图片转存中…(img-bsUSi4ij-1712420495283)]
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:
[外链图片转存中…(img-2lAr5eku-1712420495283)]
《960全网最全Android开发笔记》
[外链图片转存中…(img-W5oio9qP-1712420495284)]
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
[外链图片转存中…(img-b3FDTzkh-1712420495284)]
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!