http://mrbool.com/how-to-customize-different-buttons-in-android/27747
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true"
android:drawable="@drawable/one">
</item>
<item android:drawable="@drawable/two"> //these is the normal state of button when it is not pressed. And the background is provided when it is not pressed.
</item>
</selector>
2014年8月24日 星期日
2014年8月22日 星期五
Jdbcmysql pst.getGeneratedKeys//取得新增之後的ID
Jdbcmysql jdbcmysql = new Jdbcmysql("citygostore");
Connection con = jdbcmysql.getConnection();
con.setAutoCommit(false);//交易
int memberowner_effectLines = 0;
try {
pst = con.prepareStatement("INSERT INTO `citygostore`.`memberowner` (`mo_membersn`, `sc_sn`,card_number, `mo_cardstatus`, `memberowner_createDate`) VALUES "
+ "( ?, ?,?, ?, ?)",Statement.RETURN_GENERATED_KEYS);
System.out.println("pst:"+pst);
} catch(MySQLIntegrityConstraintViolationException e1){
postMemberownerReturnMes.put("issus", "-1");//想要新增不存在的卡片
con.rollback();//交易
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
con.rollback();//交易
postMemberownerReturnMes.put("issus", "0");
return SUCCESS;
}
try {
pst.setInt(1,Integer.valueOf(mo_membersn ));
pst.setInt(2, Integer.valueOf(sc_sn));
pst.setString(3, card_number);
pst.setInt(4, Integer.valueOf(mo_cardstatus));
java.util.Date dt = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
pst.setString(5,currentTime);
memberowner_effectLines = pst.executeUpdate();
System.out.println("memberowner_effectLines:"+memberowner_effectLines);
postMemberownerReturnMes.put("effectLines", String.valueOf(memberowner_effectLines));
ResultSet rs = pst.getGeneratedKeys();//取得新增之後的ID pst1 = connection.prepareStatement(,Statement.RETURN_GENERATED_KEYS)
if (rs != null && rs.next()) {
Long key = rs.getLong(1);
System.out.println("generatedbTicket mo_sn:" + key);
postMemberownerReturnMes.put("mo_sn", String.valueOf(key));
}
if (memberowner_effectLines == 0) {
postMemberownerReturnMes.put("issus", "0");
} else {
postMemberownerReturnMes.put("issus", "1");
addCredit_card(con,sc_sn,mo_membersn,card_number,card_name,expire_date,valid_number);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
con.rollback();//交易
postMemberownerReturnMes.put("issus", "0");
}
return SUCCESS;
2014年8月21日 星期四
Android 输入法 控制 切换
http://blog.csdn.net/wdzayyt/article/details/7489551
accountEditText.requestFocus();
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN);
///////////////////////////
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
accountEditText.requestFocus();
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN);
///////////////////////////
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
2014年8月20日 星期三
mysql datatime java
java.util.Date dt = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
pst.setString(4,currentTime);
effectLines = pst.executeUpdate();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
pst.setString(4,currentTime);
effectLines = pst.executeUpdate();
smd = r.getMetaData();
Jdbcmysql jdbcmysql=new Jdbcmysql("citygostore");
ResultSet r=jdbcmysql.executeQuery(Citygostore.sql);
ResultSetMetaData rsmd = null;
rsmd = r.getMetaData();
index是從1開始
14個欄位 rsmd.getColumnCount():14,
rsmd.getColumnType(1):4
第一個名稱叫做 rsmd.getColumnLabel(1):mo_sn
rsmd.getCatalogName(1):citygostore
rsmd.getColumnClassName(1):java.lang.Integer
ADD FOREIGN KEY ( `saleTypeId` ) REFERENCES
ALTER TABLE `ticket` ADD FOREIGN KEY ( `saleTypeId` ) REFERENCES `Ticket`.`saleType` (
`id`
) ON DELETE CASCADE ON UPDATE CASCADE ;
`id`
) ON DELETE CASCADE ON UPDATE CASCADE ;
2014年8月19日 星期二
2014年8月18日 星期一
removeOtherFragments
private void removeOtherFragments(){
List allFragments = getChildFragmentManager().getFragments();
Log.d("OnTicketClick","allFragments.size:"+allFragments.size());
for(Fragment f:allFragments){
if(!f.equals(this)){//除了當前全部關掉
getChildFragmentManager().beginTransaction().remove(f).commit();
}
}
}
2014年8月16日 星期六
建立關聯mysql
建立關聯之前 要把之前的全部清除 以免產生錯誤
ALTER TABLE `member` ADD FOREIGN KEY ( `signatureId` ) REFERENCES `ewallet`.`signature` ( `signatureId` ) ON DELETE CASCADE ON UPDATE CASCADE 要從母開始關聯子
2014年8月15日 星期五
Singleton in Android
https://gist.github.com/Akayh/5566992
public static TicketTool getInstance(){ //新增一個public method getInstance()判斷有沒有new過
if(ticketTool == null){
ticketTool = new TicketTool();
}
return ticketTool;
}
用法:
TicketTool ticketTool= TicketTool.getInstance();
變數設為PUBLIC 其他都是private
在CLASS外面存取CLASS中的變數要用TicketTool.getInstance().ticket_idArrayList
package com.ewallet.citygo.model;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.StringRequest;
import com.ewallet.citygo.CGApplication;
public class TicketTool {
public String getStrResponse() {
return getInstance().strResponse;
}
public void setStrResponse(String strResponse) {
getInstance().strResponse = strResponse;
}
public static ArrayList<String> getTicket_TK_nameArrayList() {
return getInstance().ticket_TK_nameArrayList;
}
public static void setTicket_TK_nameArrayList(
ArrayList<String> ticket_TK_nameArrayList) {
getInstance().ticket_TK_nameArrayList = ticket_TK_nameArrayList;
}
public static ArrayList<Integer> getTicket_idArrayList() {
return getInstance().ticket_idArrayList;
}
public static void setTicket_idArrayList(ArrayList<Integer> ticket_idArrayList) {
getInstance().ticket_idArrayList = ticket_idArrayList;
}
public static ArrayList<SaleType> getSaleTypeArrayList() {
return getInstance().SaleTypeArrayList;
}
public static void setSaleTypeArrayList(ArrayList<SaleType> saleTypeArrayList) {
getInstance().SaleTypeArrayList = saleTypeArrayList;
}
public static SaleType getTicketToolsaleType() {
return getInstance().TicketToolsaleType;
}
public static void setTicketToolsaleType(SaleType ticketToolsaleType) {
getInstance().TicketToolsaleType = ticketToolsaleType;
}
public static Sale getTicketToolSale() {
return getInstance().TicketToolSale;
}
public static void setTicketToolSale(Sale ticketToolSale) {
getInstance().TicketToolSale = ticketToolSale;
}
final private static String url="http://106.187.38.21:8080/struts2ex/";
public String strResponse;
public ArrayList<String> ticket_TK_nameArrayList;
public ArrayList<Integer> ticket_idArrayList;
public ArrayList<SaleType> SaleTypeArrayList;
public SaleType TicketToolsaleType;
public Sale TicketToolSale;
private static TicketTool ticketTool = null;
public static TicketTool getInstance(){ //新增一個public method getInstance()判斷有沒有new過
if(ticketTool == null){
ticketTool = new TicketTool();
getInstance().ticket_TK_nameArrayList= new ArrayList<String> ();
getInstance().ticket_idArrayList= new ArrayList<Integer>();
getInstance().SaleTypeArrayList=new ArrayList<SaleType>();
getInstance(). TicketToolsaleType=new SaleType();
getInstance().TicketToolSale =new Sale();
}
return ticketTool;
}
//目前不使用
public String getTicket(){
//從http://106.187.38.21/funad/funAD/phpMyAdmin/
//獲得傳回的JSONARRAY
StringRequest strReq = new StringRequest(Method.POST,
url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG Ticket", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
//ticket.TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "getTicket");
return ticketTool.strResponse;
}
//目前不使用
public void getSaleType(final int id){
StringRequest strReq = new StringRequest(Method.POST,
url+"querySaleType", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.d("TAG TicketTool getSaleType", response.toString());
strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
if(j.getJSONObject(i).getInt("saleId")==id){
SaleType saleType= new SaleType();
TicketTool.getInstance().TicketToolsaleType.setId(j.getJSONObject(i).getInt("id"));
saleType.setSaleId(j.getJSONObject(i).getInt("saleId"));
saleType.setPrice(j.getJSONObject(i).getInt("price"));
//Log.d("QRShopConsumeFragment getSaleType","price:"+saleType.getPrice());
saleType.setStocks(j.getJSONObject(i).getInt("stocks"));
saleType.setQuantitySold(j.getJSONObject(i).getInt("quantitySold"));
saleType.setBeginningDate(j.getJSONObject(i).getString("beginningDate"));
saleType.setClosingDate(j.getJSONObject(i).getString("closingDate"));
saleType.setUpdate_Date(j.getJSONObject(i).getString("update_Date"));
TicketToolsaleType=saleType;
}else{
}
//ticketTool.SaleTypeArrayList.add(saleType);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "getSaleType");
}
public void getTK_name(final Context c,final ListView listView){
//從http://106.187.38.21/funad/funAD/phpMyAdmin/
//獲得傳回的JSONARRAY
StringRequest strReq = new StringRequest(Method.POST,
url+"getTK_name", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG Ticket", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
getInstance().ticket_TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
getInstance().ticket_idArrayList.add(j.getJSONObject(i).getInt("id"));
}
listView.setAdapter(new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1, ticketTool.ticket_TK_nameArrayList));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "getTK_name");
}
public void setPrice(final int id,final TextView t) {
StringRequest strReq = new StringRequest(Method.POST,
url+"querySaleType", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.d("TAG TicketTool getSaleType", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
if(j.getJSONObject(i).getInt("saleId")==id){
//Log.d("TicketTool setPrice","price:"+j.getJSONObject(i).getInt("price"));
t.setText(String.valueOf(j.getJSONObject(i).getInt("price")));
}else{
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "setPrice");
}
public void setTK_description(final int id,final TextView t) {
StringRequest strReq = new StringRequest(Method.POST,
url+"querySale", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.d("TAG TicketTool getSaleType", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
if(j.getJSONObject(i).getInt("id")==id){
t.setText(j.getJSONObject(i).getString("TK_description"));
}else{
}
//ticketTool.SaleTypeArrayList.add(saleType);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "setTK_description");
}
}
public static TicketTool getInstance(){ //新增一個public method getInstance()判斷有沒有new過
if(ticketTool == null){
ticketTool = new TicketTool();
}
return ticketTool;
}
用法:
TicketTool ticketTool= TicketTool.getInstance();
變數設為PUBLIC 其他都是private
在CLASS外面存取CLASS中的變數要用TicketTool.getInstance().ticket_idArrayList
package com.ewallet.citygo.model;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.StringRequest;
import com.ewallet.citygo.CGApplication;
public class TicketTool {
public String getStrResponse() {
return getInstance().strResponse;
}
public void setStrResponse(String strResponse) {
getInstance().strResponse = strResponse;
}
public static ArrayList<String> getTicket_TK_nameArrayList() {
return getInstance().ticket_TK_nameArrayList;
}
public static void setTicket_TK_nameArrayList(
ArrayList<String> ticket_TK_nameArrayList) {
getInstance().ticket_TK_nameArrayList = ticket_TK_nameArrayList;
}
public static ArrayList<Integer> getTicket_idArrayList() {
return getInstance().ticket_idArrayList;
}
public static void setTicket_idArrayList(ArrayList<Integer> ticket_idArrayList) {
getInstance().ticket_idArrayList = ticket_idArrayList;
}
public static ArrayList<SaleType> getSaleTypeArrayList() {
return getInstance().SaleTypeArrayList;
}
public static void setSaleTypeArrayList(ArrayList<SaleType> saleTypeArrayList) {
getInstance().SaleTypeArrayList = saleTypeArrayList;
}
public static SaleType getTicketToolsaleType() {
return getInstance().TicketToolsaleType;
}
public static void setTicketToolsaleType(SaleType ticketToolsaleType) {
getInstance().TicketToolsaleType = ticketToolsaleType;
}
public static Sale getTicketToolSale() {
return getInstance().TicketToolSale;
}
public static void setTicketToolSale(Sale ticketToolSale) {
getInstance().TicketToolSale = ticketToolSale;
}
final private static String url="http://106.187.38.21:8080/struts2ex/";
public String strResponse;
public ArrayList<String> ticket_TK_nameArrayList;
public ArrayList<Integer> ticket_idArrayList;
public ArrayList<SaleType> SaleTypeArrayList;
public SaleType TicketToolsaleType;
public Sale TicketToolSale;
private static TicketTool ticketTool = null;
public static TicketTool getInstance(){ //新增一個public method getInstance()判斷有沒有new過
if(ticketTool == null){
ticketTool = new TicketTool();
getInstance().ticket_TK_nameArrayList= new ArrayList<String> ();
getInstance().ticket_idArrayList= new ArrayList<Integer>();
getInstance().SaleTypeArrayList=new ArrayList<SaleType>();
getInstance(). TicketToolsaleType=new SaleType();
getInstance().TicketToolSale =new Sale();
}
return ticketTool;
}
//目前不使用
public String getTicket(){
//從http://106.187.38.21/funad/funAD/phpMyAdmin/
//獲得傳回的JSONARRAY
StringRequest strReq = new StringRequest(Method.POST,
url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG Ticket", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
//ticket.TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "getTicket");
return ticketTool.strResponse;
}
//目前不使用
public void getSaleType(final int id){
StringRequest strReq = new StringRequest(Method.POST,
url+"querySaleType", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.d("TAG TicketTool getSaleType", response.toString());
strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
if(j.getJSONObject(i).getInt("saleId")==id){
SaleType saleType= new SaleType();
TicketTool.getInstance().TicketToolsaleType.setId(j.getJSONObject(i).getInt("id"));
saleType.setSaleId(j.getJSONObject(i).getInt("saleId"));
saleType.setPrice(j.getJSONObject(i).getInt("price"));
//Log.d("QRShopConsumeFragment getSaleType","price:"+saleType.getPrice());
saleType.setStocks(j.getJSONObject(i).getInt("stocks"));
saleType.setQuantitySold(j.getJSONObject(i).getInt("quantitySold"));
saleType.setBeginningDate(j.getJSONObject(i).getString("beginningDate"));
saleType.setClosingDate(j.getJSONObject(i).getString("closingDate"));
saleType.setUpdate_Date(j.getJSONObject(i).getString("update_Date"));
TicketToolsaleType=saleType;
}else{
}
//ticketTool.SaleTypeArrayList.add(saleType);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "getSaleType");
}
public void getTK_name(final Context c,final ListView listView){
//從http://106.187.38.21/funad/funAD/phpMyAdmin/
//獲得傳回的JSONARRAY
StringRequest strReq = new StringRequest(Method.POST,
url+"getTK_name", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG Ticket", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
getInstance().ticket_TK_nameArrayList.add(j.getJSONObject(i).getString("TK_name"));
getInstance().ticket_idArrayList.add(j.getJSONObject(i).getInt("id"));
}
listView.setAdapter(new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1, ticketTool.ticket_TK_nameArrayList));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "getTK_name");
}
public void setPrice(final int id,final TextView t) {
StringRequest strReq = new StringRequest(Method.POST,
url+"querySaleType", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.d("TAG TicketTool getSaleType", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
if(j.getJSONObject(i).getInt("saleId")==id){
//Log.d("TicketTool setPrice","price:"+j.getJSONObject(i).getInt("price"));
t.setText(String.valueOf(j.getJSONObject(i).getInt("price")));
}else{
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "setPrice");
}
public void setTK_description(final int id,final TextView t) {
StringRequest strReq = new StringRequest(Method.POST,
url+"querySale", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Log.d("TAG TicketTool getSaleType", response.toString());
ticketTool.strResponse=response;
try {
JSONArray j = new JSONArray(response);
for(int i =0;i<j.length();i++){
if(j.getJSONObject(i).getInt("id")==id){
t.setText(j.getJSONObject(i).getString("TK_description"));
}else{
}
//ticketTool.SaleTypeArrayList.add(saleType);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG Ticket", "Error: " + error.getMessage());
}
});
CGApplication.getInstance().addToRequestQueue(strReq, "setTK_description");
}
}
2014年8月14日 星期四
Struts2 action通过struts2返回json方法
http://blog.csdn.net/biboheart/article/details/10427883
一開始 先宣告一個List<MyBean> data;當傳入
public class Getjson extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<MyBean> data;
public List<MyBean> getData() {
return data;
}
public void setData(List<MyBean> data) {
this.data = data;
}
private static final Logger logger = Logger.getLogger(Getjson.class.getName());
public String loadJsonFromMap(){
try {
System.out.println(data.size());
for (int i = 0; i < data.size(); i++) {
System.out.println("Data " + data.get(i).getUserId() +"-"+ data.get(i).getMessageNo());
}
System.out.println("Execute Method");
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 声明 Struts2 的属性 例如将 Struts2 后缀改为 .helloween -->
<!-- <constant name="struts.action.extension" value="helloween"></constant> -->
<package name="main" extends="json-default">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack" />
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="jsonFromMap" class="com.Getjson" method="loadJsonFromMap">
<result type="json" />
</action>
</package>
</struts>
一開始 先宣告一個List<MyBean> data;當傳入
public class Getjson extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<MyBean> data;
public List<MyBean> getData() {
return data;
}
public void setData(List<MyBean> data) {
this.data = data;
}
private static final Logger logger = Logger.getLogger(Getjson.class.getName());
public String loadJsonFromMap(){
try {
System.out.println(data.size());
for (int i = 0; i < data.size(); i++) {
System.out.println("Data " + data.get(i).getUserId() +"-"+ data.get(i).getMessageNo());
}
System.out.println("Execute Method");
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 声明 Struts2 的属性 例如将 Struts2 后缀改为 .helloween -->
<!-- <constant name="struts.action.extension" value="helloween"></constant> -->
<package name="main" extends="json-default">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="json">
<param name="enableSMD">true</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack" />
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="jsonFromMap" class="com.Getjson" method="loadJsonFromMap">
<result type="json" />
</action>
</package>
</struts>
HttpAsyncTask
public class HttpAsyncTask extends AsyncTask<String, Void, String> {
/** The m context. */
private Context mContext;
/** The m fragment callback. */
private FragmentCallback mFragmentCallback;//1
/**
* Instantiates a new http async task.
*
* @param context the context
* @param fragmentCallback the fragment callback
*/
public HttpAsyncTask(Context context , FragmentCallback fragmentCallback) {
mContext = context;
mFragmentCallback = fragmentCallback;
}
@Override
protected String doInBackground(String... params) {
try{
return JsonUtils.POST(params[0], params[1]);
}catch(Exception e){
e.printStackTrace();
return null;
}
}
// onPostExecute displays the results of the AsyncTask.
/* (non-Javadoc)
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
try {
JSONObject json = new JSONObject(result);
mFragmentCallback.onTaskDone(json);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class JsonUtils {
/**
* String convert to json object.
*
* @param value the value
* @return the JSON object
*/
public static JSONObject stringConvertToJsonObject(String value) {
JSONObject object = null;
try {
object = new JSONObject(value);
} catch (Exception e) {
// TODO: handle exception
}
return object;
}
/**
* Post.
*
* @param url the url
* @param json the json
* @return the string
*/
public static String POST(String url, String json) {
InputStream inputStream = null;
String result = "";
try {
// 1. create HttpClient
HttpClient httpclient = new DefaultHttpClient();
// 2. make POST request to the given URL
HttpPost httpPost = new HttpPost(url);
//Log.d("JsonUtils POST json.toString()", json.toString());
// ** Alternative way to convert Person object to JSON string usin
// Jackson Lib
// ObjectMapper mapper = new ObjectMapper();
// json = mapper.writeValueAsString(person);
// 5. set json to StringEntity
StringEntity se = new StringEntity(json.toString(), HTTP.UTF_8);
// 6. set httpPost Entity
httpPost.setEntity(se);
// 7. Set some headers to inform server about the type of the
// content
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
// httpPost.setHeader("user-agent", "Java/1.7.0_17");
// httpPost.setHeader("connection", "keep-alive");
// 8. Execute POST request to the given URL
HttpResponse httpResponse = httpclient.execute(httpPost);
// 9. receive response as inputStream
inputStream = httpResponse.getEntity().getContent();
// 10. convert inputstream to string
if (inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
} catch (Exception e) {
e.printStackTrace();
}
// 11. return result
Utils.myLog(result);
return result;
}
/**
* Convert input stream to string.
*
* @param inputStream the input stream
* @return the string
* @throws IOException Signals that an I/O exception has occurred.
*/
private static String convertInputStreamToString(InputStream inputStream)
throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream));
String line = "";
String result = "";
while ((line = bufferedReader.readLine()) != null)
result += line;
inputStream.close();
return result;
}
}
/** The m context. */
private Context mContext;
/** The m fragment callback. */
private FragmentCallback mFragmentCallback;//1
/**
* Instantiates a new http async task.
*
* @param context the context
* @param fragmentCallback the fragment callback
*/
public HttpAsyncTask(Context context , FragmentCallback fragmentCallback) {
mContext = context;
mFragmentCallback = fragmentCallback;
}
@Override
protected String doInBackground(String... params) {
try{
return JsonUtils.POST(params[0], params[1]);
}catch(Exception e){
e.printStackTrace();
return null;
}
}
// onPostExecute displays the results of the AsyncTask.
/* (non-Javadoc)
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
try {
JSONObject json = new JSONObject(result);
mFragmentCallback.onTaskDone(json);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class JsonUtils {
/**
* String convert to json object.
*
* @param value the value
* @return the JSON object
*/
public static JSONObject stringConvertToJsonObject(String value) {
JSONObject object = null;
try {
object = new JSONObject(value);
} catch (Exception e) {
// TODO: handle exception
}
return object;
}
/**
* Post.
*
* @param url the url
* @param json the json
* @return the string
*/
public static String POST(String url, String json) {
InputStream inputStream = null;
String result = "";
try {
// 1. create HttpClient
HttpClient httpclient = new DefaultHttpClient();
// 2. make POST request to the given URL
HttpPost httpPost = new HttpPost(url);
//Log.d("JsonUtils POST json.toString()", json.toString());
// ** Alternative way to convert Person object to JSON string usin
// Jackson Lib
// ObjectMapper mapper = new ObjectMapper();
// json = mapper.writeValueAsString(person);
// 5. set json to StringEntity
StringEntity se = new StringEntity(json.toString(), HTTP.UTF_8);
// 6. set httpPost Entity
httpPost.setEntity(se);
// 7. Set some headers to inform server about the type of the
// content
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
// httpPost.setHeader("user-agent", "Java/1.7.0_17");
// httpPost.setHeader("connection", "keep-alive");
// 8. Execute POST request to the given URL
HttpResponse httpResponse = httpclient.execute(httpPost);
// 9. receive response as inputStream
inputStream = httpResponse.getEntity().getContent();
// 10. convert inputstream to string
if (inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
} catch (Exception e) {
e.printStackTrace();
}
// 11. return result
Utils.myLog(result);
return result;
}
/**
* Convert input stream to string.
*
* @param inputStream the input stream
* @return the string
* @throws IOException Signals that an I/O exception has occurred.
*/
private static String convertInputStreamToString(InputStream inputStream)
throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream));
String line = "";
String result = "";
while ((line = bufferedReader.readLine()) != null)
result += line;
inputStream.close();
return result;
}
}
Jdbcmysql
兩個class Db Jdbcmysql
package com;
import com.opensymphony.xwork2.ActionSupport;
public class Db extends ActionSupport {
/**
*
*/
private int id ;
private static final long serialVersionUID = 7562913232984175945L;
public String execute() {
Jdbcmysql j =new Jdbcmysql();
j.SelectTable1();
return SUCCESS;
}
}
package com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
public class Jdbcmysql {
private Connection con = null; // Database objects
// 連接object
private Statement stat = null;
// 執行,傳入之sql為完整字串
private ResultSet rs = null;
// 結果集
private PreparedStatement pst = null;
// 執行,傳入之sql為預儲之字申,需要傳入變數之位置
// 先利用?來做標示
private String dropdbSQL = "DROP TABLE User ";
private String createdbSQL = "CREATE TABLE User (" + " id INTEGER "
+ " , name VARCHAR(20) " + " , passwd VARCHAR(20))";
private String insertdbSQL = "insert into User(id,name,passwd) "
+ "select ifNULL(max(id),0)+1,?,? FROM User";
private String selectSQL = "select * from User ";
public Jdbcmysql() {
}
// 建立table的方式
// 可以看看Statement的使用方式
public void createTable() {
try {
stat = con.createStatement();
stat.executeUpdate(createdbSQL);
} catch (SQLException e) {
System.out.println("CreateDB Exception :" + e.toString());
} finally {
Close();
}
}
// 新增資料
// 可以看看PrepareStatement的使用方式
public void insertTable(String name, String passwd) {
try {
pst = con.prepareStatement(insertdbSQL);
pst.setString(1, name);
pst.setString(2, passwd);
pst.executeUpdate();
} catch (SQLException e) {
System.out.println("InsertDB Exception :" + e.toString());
} finally {
Close();
}
}
// 刪除Table,
// 跟建立table很像
public void dropTable() {
try {
stat = con.createStatement();
stat.executeUpdate(dropdbSQL);
} catch (SQLException e) {
System.out.println("DropDB Exception :" + e.toString());
} finally {
Close();
}
}
// 查詢資料
// 可以看看回傳結果集及取得資料方式
public void SelectTable() {
try {
stat = con.createStatement();
rs = stat.executeQuery(selectSQL);
System.out.println("ID\t\tName\t\tPASSWORD");
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t\t"
+ rs.getString("name") + "\t\t"
+ rs.getString("passwd"));
}
} catch (SQLException e) {
System.out.println("DropDB Exception :" + e.toString());
} finally {
Close();
}
}
public void SelectTable1() {
try {
// 註冊driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
con = DriverManager.getConnection(
"jdbc:mysql://106.187.38.21:3306/ewallet","tintin","tintin");
if(con!=null){
stat = con.createStatement();
rs = stat.executeQuery("SELECT * FROM transaction");
System.out.println("ID source_id source_id type ");
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t\t"
+ rs.getString("source_id") + "\t\t"
+ rs.getString("type"));
}
}else{
System.out.println("con=null");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 完整使用完資料庫後,記得要關閉所有Object
// 否則在等待Timeout時,可能會有Connection poor的狀況
private void Close() {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stat != null) {
stat.close();
stat = null;
}
if (pst != null) {
pst.close();
pst = null;
}
} catch (SQLException e) {
System.out.println("Close Exception :" + e.toString());
}
}
/*
public static void main(String[] args) {
// 測看看是否正常
Jdbcmysql test = new Jdbcmysql();
test.dropTable();
test.createTable();
test.insertTable("yku", "12356");
test.insertTable("yku2", "7890");
test.SelectTable();
}
*/
}
package com;
import com.opensymphony.xwork2.ActionSupport;
public class Db extends ActionSupport {
/**
*
*/
private int id ;
private static final long serialVersionUID = 7562913232984175945L;
public String execute() {
Jdbcmysql j =new Jdbcmysql();
j.SelectTable1();
return SUCCESS;
}
}
package com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
public class Jdbcmysql {
private Connection con = null; // Database objects
// 連接object
private Statement stat = null;
// 執行,傳入之sql為完整字串
private ResultSet rs = null;
// 結果集
private PreparedStatement pst = null;
// 執行,傳入之sql為預儲之字申,需要傳入變數之位置
// 先利用?來做標示
private String dropdbSQL = "DROP TABLE User ";
private String createdbSQL = "CREATE TABLE User (" + " id INTEGER "
+ " , name VARCHAR(20) " + " , passwd VARCHAR(20))";
private String insertdbSQL = "insert into User(id,name,passwd) "
+ "select ifNULL(max(id),0)+1,?,? FROM User";
private String selectSQL = "select * from User ";
public Jdbcmysql() {
}
// 建立table的方式
// 可以看看Statement的使用方式
public void createTable() {
try {
stat = con.createStatement();
stat.executeUpdate(createdbSQL);
} catch (SQLException e) {
System.out.println("CreateDB Exception :" + e.toString());
} finally {
Close();
}
}
// 新增資料
// 可以看看PrepareStatement的使用方式
public void insertTable(String name, String passwd) {
try {
pst = con.prepareStatement(insertdbSQL);
pst.setString(1, name);
pst.setString(2, passwd);
pst.executeUpdate();
} catch (SQLException e) {
System.out.println("InsertDB Exception :" + e.toString());
} finally {
Close();
}
}
// 刪除Table,
// 跟建立table很像
public void dropTable() {
try {
stat = con.createStatement();
stat.executeUpdate(dropdbSQL);
} catch (SQLException e) {
System.out.println("DropDB Exception :" + e.toString());
} finally {
Close();
}
}
// 查詢資料
// 可以看看回傳結果集及取得資料方式
public void SelectTable() {
try {
stat = con.createStatement();
rs = stat.executeQuery(selectSQL);
System.out.println("ID\t\tName\t\tPASSWORD");
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t\t"
+ rs.getString("name") + "\t\t"
+ rs.getString("passwd"));
}
} catch (SQLException e) {
System.out.println("DropDB Exception :" + e.toString());
} finally {
Close();
}
}
public void SelectTable1() {
try {
// 註冊driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
con = DriverManager.getConnection(
"jdbc:mysql://106.187.38.21:3306/ewallet","tintin","tintin");
if(con!=null){
stat = con.createStatement();
rs = stat.executeQuery("SELECT * FROM transaction");
System.out.println("ID source_id source_id type ");
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t\t"
+ rs.getString("source_id") + "\t\t"
+ rs.getString("type"));
}
}else{
System.out.println("con=null");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 完整使用完資料庫後,記得要關閉所有Object
// 否則在等待Timeout時,可能會有Connection poor的狀況
private void Close() {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stat != null) {
stat.close();
stat = null;
}
if (pst != null) {
pst.close();
pst = null;
}
} catch (SQLException e) {
System.out.println("Close Exception :" + e.toString());
}
}
/*
public static void main(String[] args) {
// 測看看是否正常
Jdbcmysql test = new Jdbcmysql();
test.dropTable();
test.createTable();
test.insertTable("yku", "12356");
test.insertTable("yku2", "7890");
test.SelectTable();
}
*/
}
2014年8月13日 星期三
Struts2 Ajax出现错误“Template /template/ajax/head.ftl not found”
http://bailong139.blog.163.com/blog/static/2072381002013186225100
FilterDispatcher <<< is deprecated! Please use the new filters!
http://www.cnblogs.com/babybluevino/archive/2012/11/29/2794732.html
taglib
http://stackoverflow.com/questions/5987908/how-to-resolve-can-not-find-the-tag-library-descriptor-for-http-java-sun-co
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2014年8月12日 星期二
dialog
<style name="logindialog" parent="@android:Theme.Dialog"><!--dialog-->
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">false</item><!--半透明-->
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
public OnClickListener OnTransactionClick = new OnClickListener() {
@Override
public void onClick(View v) {
dialog = new Dialog(getActivity(), R.style.logindialog);
dialog.setContentView(R.layout.logindialog);
dialog.show();
}
};
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">false</item><!--半透明-->
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
public OnClickListener OnTransactionClick = new OnClickListener() {
@Override
public void onClick(View v) {
dialog = new Dialog(getActivity(), R.style.logindialog);
dialog.setContentView(R.layout.logindialog);
dialog.show();
}
};
class ImageDownloaderTask extends AsyncTask
package com.ewallet.citygo.utils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
public class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> {
private final WeakReference imageViewReference;
String igstorepath;
boolean isdownloaded=false;
public ImageDownloaderTask(ImageView imageView,String igstorepath) {
imageViewReference = new WeakReference(imageView);
this.igstorepath=igstorepath;
}
private Bitmap downloadBitmap(String url) {
File f = new File(igstorepath);
if(f.exists() && !f.isDirectory()) { //Note that exists() will return true for directories, too
isdownloaded=true;
Log.d("ImageDownloaderTask 已存在:"+igstorepath,""+url);
Bitmap bMap = BitmapFactory.decodeFile(igstorepath);
return bMap;
}else{
isdownloaded=false;
Log.d("ImageDownloaderTask 不存在 ",""+url);
final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
HttpGet getRequest = null;
if(url!=null){
getRequest = new HttpGet(url);
}else{
Log.d("ImageDownloaderTask ","getRequest = new HttpGet(url) null");
}
try {
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w("ImageDownloader", "Error " + statusCode
+ " while retrieving bitmap from " + url);
return null;
}
final HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = null;
try {
inputStream = entity.getContent();
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} finally {
if (inputStream != null) {
inputStream.close();
}
entity.consumeContent();
}
}
} catch (Exception e) {
// Could provide a more explicit error message for IOException or
// IllegalStateException
getRequest.abort();
Log.w("ImageDownloader", "Error while retrieving bitmap from " + url);
} finally {
if (client != null) {
client.close();
}
}
return null;
}
}
@Override
// Actual download method, run in the task thread
protected Bitmap doInBackground(String... params) {
// params comes from the execute() call: params[0] is the url.
return downloadBitmap(params[0]);
}
@Override
// Once the image is downloaded, associates it to the imageView
protected void onPostExecute(Bitmap bitmap) {
if (isCancelled()) {
bitmap = null;
}
if (imageViewReference != null) {
ImageView imageView = (ImageView) imageViewReference.get();
if (imageView != null) {
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
if(isdownloaded){
//如果下載過的就不存
}else{
File _file = new File(igstorepath);
OutputStream _outStream;
try {
_outStream = new FileOutputStream(_file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, _outStream);
try {
_outStream.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
_outStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
//imageView.setImageDrawable(imageView.getContext().getResources().getDrawable(R.drawable.basketball));
}
}
}
}
}
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.WeakReference;
public class ImageDownloaderTask extends AsyncTask<String, Void, Bitmap> {
private final WeakReference imageViewReference;
String igstorepath;
boolean isdownloaded=false;
public ImageDownloaderTask(ImageView imageView,String igstorepath) {
imageViewReference = new WeakReference(imageView);
this.igstorepath=igstorepath;
}
private Bitmap downloadBitmap(String url) {
File f = new File(igstorepath);
if(f.exists() && !f.isDirectory()) { //Note that exists() will return true for directories, too
isdownloaded=true;
Log.d("ImageDownloaderTask 已存在:"+igstorepath,""+url);
Bitmap bMap = BitmapFactory.decodeFile(igstorepath);
return bMap;
}else{
isdownloaded=false;
Log.d("ImageDownloaderTask 不存在 ",""+url);
final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
HttpGet getRequest = null;
if(url!=null){
getRequest = new HttpGet(url);
}else{
Log.d("ImageDownloaderTask ","getRequest = new HttpGet(url) null");
}
try {
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w("ImageDownloader", "Error " + statusCode
+ " while retrieving bitmap from " + url);
return null;
}
final HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = null;
try {
inputStream = entity.getContent();
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} finally {
if (inputStream != null) {
inputStream.close();
}
entity.consumeContent();
}
}
} catch (Exception e) {
// Could provide a more explicit error message for IOException or
// IllegalStateException
getRequest.abort();
Log.w("ImageDownloader", "Error while retrieving bitmap from " + url);
} finally {
if (client != null) {
client.close();
}
}
return null;
}
}
@Override
// Actual download method, run in the task thread
protected Bitmap doInBackground(String... params) {
// params comes from the execute() call: params[0] is the url.
return downloadBitmap(params[0]);
}
@Override
// Once the image is downloaded, associates it to the imageView
protected void onPostExecute(Bitmap bitmap) {
if (isCancelled()) {
bitmap = null;
}
if (imageViewReference != null) {
ImageView imageView = (ImageView) imageViewReference.get();
if (imageView != null) {
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
if(isdownloaded){
//如果下載過的就不存
}else{
File _file = new File(igstorepath);
OutputStream _outStream;
try {
_outStream = new FileOutputStream(_file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, _outStream);
try {
_outStream.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
_outStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
//imageView.setImageDrawable(imageView.getContext().getResources().getDrawable(R.drawable.basketball));
}
}
}
}
}
ECLIPSE:pull下最新版方法
2014年8月8日 星期五
萬用Adapter
兩隻CLASS CouponsAdapter 和CouponsDetailActivity
//實作在NEW這個adapter上CouponsDetailActivity的
CouponsAdapter .init(new ListAdapterCallbacks() {
然後再CouponsFragment再implement
couponsAdapter = new CouponsAdapter(mContext,jArray);
mListView.setAdapter(couponsAdapter);
couponsAdapter.init(new ListAdapterCallbacks() {
@Override
public void launchDetailPage(int position) {
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("JSONARRAY",jArray.toString());
bundle.putInt("POSITION", position);
intent.putExtras(bundle);
intent.setClass(getActivity(), CouponsDetailActivity.class);
startActivity(intent);
}
});
//實作在NEW這個adapter上CouponsDetailActivity的
CouponsAdapter .init(new ListAdapterCallbacks() {
/*
*
*/
// TODO: Auto-generated Javadoc
/**
* The Class CouponsAdapter.
*/
public class CouponsAdapter extends BaseAdapter {
/** The inflater. */
private static LayoutInflater inflater = null;
/** The m context. */
private Context mContext;
/** The m callback. */
private ListAdapterCallbacks mCallback;
/** The m j array. */
private JSONArray mJArray;
private String mName;
private String mDisplayImage;
ArrayList<CouponsWrapper> couponsTicketAryList=null;//MemberFragment
/**
* Instantiates a new coupons adapter.
*
* @param context
* the context
* @param jArray
* the j array
*/
public CouponsAdapter(Context context, JSONArray jArray) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mContext = context;
mJArray = jArray;
}
public CouponsAdapter(Context context) {
mContext = context;
}
public CouponsAdapter(Context context,ArrayList<CouponsWrapper> couponsTicketAryList) {//MemberFragment 目前無作用
mContext = context;
this.couponsTicketAryList=couponsTicketAryList;
Log.d("TAG CouponsAdapter() ","couponsTicketAryList");
}
public void setArray(JSONArray jArray) {
this.mJArray = jArray;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String imageUrl = JsonUtils.URL + mDisplayImage;
new DownloadFileFromURL().execute(imageUrl, mName);
}
});
thread.start();
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount() {
// TODO Auto-generated method stub
if (mJArray != null) {
return mJArray.length();
} else {
return 0;
}
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItem(int)
*/
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
/**
* The Class ViewHolder.
*/
public static class ViewHolder {
/** The nearby icon. */
public ImageView nearbyIcon;
/** The nearby title. */
public TextView nearbyTitle;
}
ViewHolder holder;
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
//Log.d("TAG getView","mFavoriteCouponsAdapter");//MemberFragment
vi = inflater.inflate(R.layout.couponsadapter, null);
holder = new ViewHolder();
holder.nearbyIcon = (ImageView) vi.findViewById(R.id.icon);
holder.nearbyTitle = (TextView) vi.findViewById(R.id.textView1);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
if(couponsTicketAryList==null){
//Log.d("TAG getView if","couponsTicketAryList==null");
setCouponsAdapter(position);
}else{
CouponsWrapper favoriteWrapper = couponsTicketAryList.get(position);
Log.d("TAG getView else",favoriteWrapper.TITLE);//MemberFragment
holder.nearbyTitle.setText(favoriteWrapper.TITLE);
holder.nearbyIcon.setImageBitmap(Utils.openBinImg(favoriteWrapper.NAME));
Log.d("TAG getView else",favoriteWrapper.NAME);//MemberFragment
//顯示廣告
}
vi.setOnClickListener(new OnItemClickListener(position));
return vi;
}
public void setCouponsAdapter(int position){
try {
JSONObject json_data = mJArray.getJSONObject(position);
String title = json_data.getString("title");
JSONObject productProvider = json_data
.getJSONObject("productProvider");
JSONObject displayImage = productProvider
.getJSONObject("displayImage");
mDisplayImage = displayImage.getString("downloadUrl");
mName = displayImage.getString("fileName");
String name = productProvider.getString("name");
String startDate = json_data.getString("startDate");
String endDate = json_data.getString("endDate");
holder.nearbyTitle.setText(title);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String imageUrl = JsonUtils.URL + mDisplayImage;
new DownloadFileFromURL().execute(mDisplayImage, mName);
}
});
thread.start();
holder.nearbyIcon.setImageDrawable(Drawable
.createFromPath(Environment.getExternalStorageDirectory()
.toString() + "/" + mName));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* The listener interface for receiving onItemClick events. The class that
* is interested in processing a onItemClick event implements this
* interface, and the object created with that class is registered with a
* component using the component's
* <code>addOnItemClickListener<code> method. When
* the onItemClick event occurs, that object's appropriate
* method is invoked.
*
* @see OnItemClickEvent
*/
private class OnItemClickListener implements OnClickListener {
/** The m position. */
private int mPosition;
/**
* Instantiates a new on item click listener.
*
* @param position
* the position
*/
OnItemClickListener(int position) {
mPosition = position;
}
/*
* (non-Javadoc)
*
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
//Log.d("class CouponsAdapter mPosition:", "" + mPosition);
mCallback.launchDetailPage(mPosition);
}
}
/**
* The Interface ListAdapterCallbacks.
*/
public static interface ListAdapterCallbacks {
/**
* Launch detail page.
*
* @param mPosition
* the m position
*/
void launchDetailPage(int mPosition);
}
/**
* Inits the.
*
* @param listAdapterCallbacks
* the list adapter callbacks
*/
public void init(ListAdapterCallbacks listAdapterCallbacks) {
mCallback = listAdapterCallbacks;
}
}
然後再CouponsFragment再implement
couponsAdapter = new CouponsAdapter(mContext,jArray);
mListView.setAdapter(couponsAdapter);
couponsAdapter.init(new ListAdapterCallbacks() {
@Override
public void launchDetailPage(int position) {
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("JSONARRAY",jArray.toString());
bundle.putInt("POSITION", position);
intent.putExtras(bundle);
intent.setClass(getActivity(), CouponsDetailActivity.class);
startActivity(intent);
}
});
訂閱:
意見 (Atom)












