最近一月在忙手上的项目,没怎么更新博客,其实是没有用到一些新的东西.

前几天功能有需要便做了一个仿iReader标签的一个模块,其实很简单,就是对一些事件做处理,然后更新UI,代码写的依然很乱...


下面上代码

package com.comdosoft.qxg;import java.util.ArrayList;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnLongClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import com.comdosoft.pojo.CardTagPojo;import com.comdosoft.pojo.CardTagViewPojo;import com.comdosoft.pojo.ParamsPojo;public class CardTagActivity extends Activity {private LinearLayout mCardTagLinearLayout;private TextView mAddTag;private List<CardTagViewPojo> mCardTagViewList = new ArrayList<CardTagViewPojo>();private List<CardTagPojo> mTagList = new ArrayList<CardTagPojo>();private boolean firstFlag = true;private int mTagIndex = 0;private String result;private ProgressDialog mPd;private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);Toast.makeText(getApplicationContext(),analysisJSON(result, msg.what), 0).show();switch (msg.what) {case 1:mPd.dismiss();if (analysisJSON(result, msg.what).equals(QixuguanParams.MES_ADD_SUCC)) {mTagList.get(mTagIndex).setId(Integer.parseInt(analysisJSON(result, 8)));}// Toast.makeText(// getApplicationContext(),// mTagList.get(mTagIndex).getName() + "--"// + mTagList.get(mTagIndex).getId(), 0).show();break;case 2:mPd.dismiss();break;case 3:mPd.dismiss();delView(mTagIndex);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.card_tag);mCardTagLinearLayout = (LinearLayout) findViewById(R.id.card_Tag_LinearLayout);mAddTag = (TextView) findViewById(R.id.card_Tag_AddTag);mPd = new ProgressDialog(CardTagActivity.this);mAddTag.setOnClickListener(new Monclick());int[] idArr = new int[] { 4, 7, 6, 10 };for (int i = 0; i < idArr.length; i++) {mTagList.add(new CardTagPojo(idArr[i], "标签" + i));}for (int i = 0; i < mTagList.size(); i++) {initView(i, 0);}}public void initView(final int index, int type) {// type=0显示标签名称,1显示修改文本框和完成按钮LayoutInflater inflater = LayoutInflater.from(getApplicationContext());LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.card_tag_item, null);TextView name = (TextView) layout.findViewById(R.id.card_Tag_Item_TagName);EditText edit = (EditText) layout.findViewById(R.id.card_Tag_Item_ET);Button del = (Button) layout.findViewById(R.id.card_Tag_Item_Del);mCardTagViewList.add(new CardTagViewPojo(name, edit, del));edit.setText(name.getText().toString());layout.setOnLongClickListener(new Monclick(index));edit.setOnTouchListener(new Monclick(index));if (type == 1) {del.setOnClickListener(new Monclick(index, 1));mSetVisibility(index, 0);} else {name.setText(mTagList.get(index).getName());del.setOnClickListener(new Monclick(index));}mCardTagLinearLayout.addView(layout);}public void delView(int index) {mCardTagLinearLayout.removeAllViews();mCardTagViewList.clear();mTagList.remove(index);for (int i = 0; i < mTagList.size(); i++) {initView(i, 0);}}public void mSetVisibility(int index, int type) {// type=0显示标签名称,1显示修改文本框和完成按钮CardTagViewPojo ctvp = mCardTagViewList.get(index);if (type == 1) {ctvp.getName().setVisibility(0);ctvp.getEdit().setVisibility(8);ctvp.getDel().setVisibility(8);} else {ctvp.getName().setVisibility(8);ctvp.getEdit().setVisibility(0);ctvp.getDel().setVisibility(0);}}public boolean mExists(int index, int type) {String name = mCardTagViewList.get(index).getEdit().getText().toString();if (type != 1) {if (mTagList.get(index).getName().equals(name)) {return false;}}for (int i = 0; i < mTagList.size(); i++) {if (name.equals(mTagList.get(i).getName())) {return true;}}return false;}public String analysisJSON(String json, int type) {try {switch (type) {case 1:if (new JSONObject(json).getString(QixuguanParams.MSG).equals(QixuguanParams.SUCCESS)) {return QixuguanParams.MES_ADD_SUCC;} else {return QixuguanParams.MES_ADD_FAIL;}case 2:if (new JSONObject(json).getString(QixuguanParams.MSG).equals(QixuguanParams.SUCCESS)) {return QixuguanParams.MES_UPD_SUCC;} else {return QixuguanParams.MES_UPD_FAIL;}case 3:if (new JSONObject(json).getString(QixuguanParams.MSG).equals(QixuguanParams.SUCCESS)) {return QixuguanParams.MES_DEL_SUCC;} else {return QixuguanParams.MES_DEL_FAIL;}case 8:return new JSONObject(json).getString(QixuguanParams.TAG_ID);}} catch (JSONException e) {e.printStackTrace();}return null;}class mThread extends Thread {private int type;private int index;public mThread() {}public mThread(int type, int index) {super();this.type = type;this.index = index;}@Overridepublic void run() {super.run();switch (type) {case 1:List<ParamsPojo> addLp = new ArrayList<ParamsPojo>();addLp.add(new ParamsPojo(QixuguanParams.UID, "2"));addLp.add(new ParamsPojo(QixuguanParams.COURSE_ID, "1"));addLp.add(new ParamsPojo(QixuguanParams.TAG_NAME, mTagList.get(index).getName()));result = HttpTool.postJSON("http://192.168.0.112:3000/api/chapters/user_add_tag",addLp);mTagIndex = index;handler.sendEmptyMessage(1);break;case 2:List<ParamsPojo> updLp = new ArrayList<ParamsPojo>();updLp.add(new ParamsPojo(QixuguanParams.TAG_ID, mTagList.get(index).getId()+ ""));updLp.add(new ParamsPojo(QixuguanParams.TAG_NAME, mTagList.get(index).getName()));result = HttpTool.postJSON("http://192.168.0.112:3000/api/chapters/user_update_tag",updLp);mTagIndex = index;handler.sendEmptyMessage(2);break;case 3:List<ParamsPojo> delLp = new ArrayList<ParamsPojo>();delLp.add(new ParamsPojo(QixuguanParams.TAG_ID, mTagList.get(index).getId()+ ""));result = HttpTool.postJSON("http://192.168.0.112:3000/api/chapters/user_del_tag",delLp);mTagIndex = index;handler.sendEmptyMessage(3);break;}}}class Monclick implements OnClickListener, OnTouchListener,OnLongClickListener {private int index;private int type;public Monclick() {}public Monclick(int index) {super();this.index = index;}public Monclick(int index, int type) {super();this.index = index;this.type = type;}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.card_Tag_Item_Del:CardTagViewPojo ctvp = mCardTagViewList.get(index);String text = ctvp.getDel().getText().toString();String name = ctvp.getEdit().getText().toString();if (text.equals(QixuguanParams.FINISH)) {if (!mExists(index, type)) {mSetVisibility(index, 1);ctvp.getName().setText(name);if (type == 1 && firstFlag) {firstFlag = false;mTagList.add(new CardTagPojo(name));mPd.setMessage(QixuguanParams.PD_TAG_ADD);mPd.show();new mThread(1, index).start();} else {CardTagPojo ctp = mTagList.get(index);ctp.setName(name);mTagList.set(index, ctp);mPd.setMessage(QixuguanParams.PD_TAG_UPD);mPd.show();new mThread(2, index).start();}} else {Toast.makeText(getApplicationContext(),QixuguanParams.MES_TAG_EXT, 0).show();}} else {mTagIndex = index;mPd.setMessage(QixuguanParams.PD_TAG_DEL);mPd.show();new mThread(3, index).start();}break;case R.id.card_Tag_AddTag:firstFlag = true;initView(mTagList.size(), 1);break;}}@Overridepublic boolean onTouch(View v, MotionEvent event) {CardTagViewPojo ct = mCardTagViewList.get(index);ct.getDel().setText(QixuguanParams.FINISH);return false;}@Overridepublic boolean onLongClick(View v) {CardTagViewPojo ctvp = mCardTagViewList.get(index);ctvp.getDel().setText(QixuguanParams.DELETE);ctvp.getEdit().setText(mTagList.get(index).getName());mSetVisibility(index, 0);return false;}}}


更多相关文章

  1. Android下Opengl程序显示文字的简单方法
  2. Android(安卓)基本组件介绍
  3. Android中TextView输入字数统计和限制
  4. PopWindow使用方法详解
  5. Android(安卓)数据显示在屏幕上
  6. Android(安卓)Studio “Cannot resolve symbol” 解决办法
  7. 第一章:初入Android大门(不同的Activity之间的数据传递与回调--s
  8. android监听虚拟键盘隐藏和显示事件
  9. Android(安卓)4.4 Kitkat Phone工作流程浅析(六)__InCallActivit

随机推荐

  1. Android:控件GridView的使用实例
  2. android获取gps坐标
  3. android studio3.5.2打包,解决建议使用 "k
  4. [Android Pro] Android fastboot刷机和获
  5. android Theme使用四
  6. 仿照利用android系统源码资源文件,修改See
  7. Android 邮件发送(一键发送, 163邮箱)
  8. Android 文件读写 + sdcard + 文件的属性
  9. Android 静默安装
  10. android-单元测试(Android JUnit Test)