最近一月在忙手上的项目,没怎么更新博客,其实是没有用到一些新的东西.
前几天功能有需要便做了一个仿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;
}
}
}