android动态拼接生成界面 ,大量界面,面试大厂之前要到达什么水平

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

mTypeElevenKeyTv = (TextView) mTypeElevenView.findViewById(R.id.tv_type_eleven_key);

mDrawingNameTv = (TextView) mTypeElevenView.findViewById(R.id.item_eleven_value_et);

mDrawingNameTv.setOnClickListener(this);

mDrawingNameTv.setTag(formDetail.getTableDetailID());

if (!TextUtils.isEmpty(mDrawingPath)) {

mDrawingNameTv.setText(mDrawingPath.subSequence(mDrawingPath.lastIndexOf(“/”) + 1, mDrawingPath.length()));

}

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 {

最后

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。希望能够帮助到大家提升技术

高级UI,自定义View

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

// 单选框取值方法

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 {

最后

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。希望能够帮助到大家提升技术

[外链图片转存中…(img-DWcZm6NV-1713713150543)]

高级UI,自定义View

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

[外链图片转存中…(img-abFq8kqv-1713713150544)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-XlL6FlKT-1713713150544)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值