先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
正文
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)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!