2012-05-09 2 views
0

저는 언젠가 VFP 8.0을 사용해 왔습니다. 내가 가장 좋아하는 것 중 하나는 매크로 함수입니다.안드로이드 사용을위한 자바 매크로

name = "Paul James" 
age = 25 
result = My name is &name, I am &age years old. 

나는 또한 할 수는 FoxPro에 건과의

dimension x[5]; 
x[0] = "box" 
x[1] = "area" 
text.&x[0]..text = "textbox" ---> textbox.text="textbox" 
text.&x[1]..text = "textarea" ---> textarea.text="textarea" 

, 나는 첨부 성장하는 것 등이 자바와 같은 OOS 언어와 존재 (또는 진짜로 원하는 다소 경사입니다 , 메신저 그냥 몇 가지 여분의 연구가 누락?), 어쨌든, 나는 여기에 내 문제가 같은 것을 가지고 싶었;

나는 응답의 모든 이름을 얻고 안드로이드 코드 팩토리에서 제공되는 "names()"메소드를 사용하여 임시 배열에 저장하는 JSON Array를 가지고있다.

의도적으로 메서드에서 만든 임시 배열의 각 이름에 대한 배열을 만들려고합니다.

설명;

JSONArray response = 
[{"name":"a","middlename":"aa","surname":"aaa"},{"name":"b","middlename":"bb","surname":"bbb"},{"name":"c","middlename":"cc","surname":"ccc"}] 

temp[] = [{name,middlename,surname}]; 

원하는 출력 :

String[] name = new String[response.firstobject.length]; 
String[] middlename = new String[response.firstobject.length]; 
String[] surname = new String[response.firstobject.length]; 

여기 내 실제 코드입니다; JSON 구문 분석기

@SuppressWarnings("null") 
public ArrayList<String> parseJson(JSONArray ja) throws JSONException{ 
    ArrayList<String> listItems = new ArrayList<String>(); 
    String[] temp = null;  
    //Get all the fields first 
    for (int i=0; i<=0; ++i){ 
     JSONObject jo = ja.getJSONObject(i); 
     if(jo.length()>0){ 
      temp = new String[jo.names().length()]; 
      for(int x=0; x<jo.names().length(); ++x){ 
       temp[x] = jo.names().getString(x); 
      } 
     } 
    } 
    } 

그래서 나는 원하는 결과를 얻지 못했습니다. 이것이 가능한가요? 왜 내가이 일을하고 있는지, 일반적인 JSON 응답 메소드를 만들고 싶었 기 때문이다. 따라서 응답을 사용하기 위해 모든 응답 이름을 기억할 필요가 없습니다. 임 자바/안드로이드 솔루션 (가장 가능성이 안드로이드와 함께 작동하는 하나를 찾고).

미리 감사드립니다.

나는 반드시 당신이 절대적으로 그것을 사용하는이없는 경우 매크로 대체를 방지하기 위해 일반적으로 해당 언어에 좋은 생각하기 때문에 당신이 비주얼 폭스 프로에서 수행 할 수있는 작업을 복제하려고하지 것이고, 당신이 이름을 사용할 수 없습니다

답변

2

표현 대신.

STORE 'city' TO cVarCity 
REPLACE (cVarCity) WITH 'Paris' 

이 훨씬 빠르게 특히 루프에서입니다 : 여기

는 이름 표현의 예입니다.

자바 측에서 당신은 아마도 Reflection API를 사용할 것입니다.

+0

, 내가 할 수있는 : 아마도 이러한 기능은 당신에게 STRTRAN, CHRTRAN를 제공 이름 바꾸기를 사용할 수 있습니까? –

+0

수정 된 답변보기 –

+0

하지만 다시, 이름 표현은 내 목표를 충족시키지 못한다. 현재 나는 당신이 지적한 Reflection에 대한 심층적 인 견해를 가지고있다. 그러나 자바 + 안드로이드에 관한 현재의 지식에 대해서는 진보 된 것처럼 보인다. 희망과 laziness 물건 "HardCoding"로 끝날 수도, 불행히도, 이것은 재사용 성과 유연성에 관해서 어떤 OO 개념을 망칠 것입니다. –

0

또한 vfp로 작업하고 루틴을 가지고 있습니다.

//--------- ejemplos : 
// STRTRAN("Hola * mundo","*", "//") ==> "Hola // mundo" 
public String STRTRAN(String cExpression, String cFindString, String cReplacement){   
    return cExpression.replace(cFindString, cReplacement); 
} 

//------------------ ejemplos: 
// miToolkit.CHRTRAN("ABCDEF", "ACE", "XYZ"); // muestra XBYDZF. ok 
// miToolkit.CHRTRAN("ABCDEF", "ACE", "XYZQRST"); // muestra XBYDZF. ok 
// miToolkit.CHRTRAN("ABCD", "ABC", "YZ"); // muestra YZCD. No es como fox 
public String CHRTRAN(String cString, String cFindChars, String cNewChars){ 
    String cResult = cString;  
    char[] aFindChars; 
    char[] aNewChars; 
    int nLength = cFindChars.length(); 

    aFindChars = cFindChars.toCharArray(); 
    aNewChars = cNewChars.toCharArray(); 
    if(cNewChars.length() < nLength){ 
     nLength = cNewChars.length() ; 
    } 
    for(int i=0; i < nLength; i++){ 
     cResult = cResult.replace(aFindChars[i], aNewChars[i]); 
    } 
    return cResult; 
} 

Saludos, 세자르 고메즈, 리마 - 페루, 내 이해를 수정하시기 바랍니다, "대신 이름 substition을 사용할 수 없습니다"혼란 소리