Android 高仿iReader标签

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

前几天功能有需要便做了一个仿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() {

		@Override
		public 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);
			}
		}
	};

	@Override
	protected 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;
		}

		@Override
		public 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;
		}

		@Override
		public 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;
			}
		}

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			CardTagViewPojo ct = mCardTagViewList.get(index);
			ct.getDel().setText(QixuguanParams.FINISH);
			return false;
		}

		@Override
		public 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值