2014-04-07 3 views
0

내 응용 프로그램에 번들 json 파일을 사용하고 있습니다. json 파일에 데이터를 읽고 쓰고 싶습니다. json에서 현재 사용할 수있는 데이터와 사용자가 데이터를 입력하는 edittext를 표시하는 listview가 있습니다. 그 데이터는 json에 기록되어야합니다. 이 작업을 수행하는 방법? 안드로이드에서 json 파일에 쓰는 방법

제 생각에는
public class MainActivity extends Activity 
    { 
     String myjsonstring; 

     ArrayList<Data> web = new ArrayList<Data>(); 

     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      JsonParser(); 

      } 



     private void JsonParser() 
     { 
      // Reading text file from assets folder 
      StringBuffer sb = new StringBuffer(); 
      BufferedReader br = null; 
      try { 
       br = new BufferedReader(new InputStreamReader(getAssets().open(
         "single.json"))); 
       String temp; 
       while ((temp = br.readLine()) != null) 
        sb.append(temp); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        br.close(); // stop reading 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      myjsonstring = sb.toString(); 

      // Try to parse JSON 
      try { 


       JSONObject jsonObjMain = new JSONObject(myjsonstring); 
       JSONArray jsonArray = jsonObjMain.getJSONArray("message"); 

       for (int i=0; i<jsonArray.length(); i++) { 

        JSONObject jsonObj = jsonArray.getJSONObject(i); 

        // Getting data from individual JSONObject 

        Data data = new Data(jsonObj.getString("name") , jsonObj.getString("msg")); 

        web.add(data); 
       } 

       final customtest1 adapter = new customtest1(MainActivity.this,R.layout.list_single,web); 
       final ListView list = (ListView)findViewById(R.id.list); 
       list.setAdapter(adapter); 

       list.setOnItemClickListener(new AdapterView.OnItemClickListener() 
       { 

        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
         Toast.makeText(MainActivity.this, "TEST.........", Toast.LENGTH_SHORT).show(); 
         adapter.notifyDataSetChanged(); 
        } 

       }); 
       //Send activity...... 

       final EditText et = (EditText)findViewById(R.id.EditText1); 
       final Button imb=(Button)findViewById(R.id.btn_send); 
       imb.setOnClickListener(new OnClickListener() 
       { 
       @Override 
       public void onClick(View arg0) 
       { 
         String str = et.getText().toString(); 

         Data store = new Data(et.getText().toString()); 
         web.add(store); 

         Toast.makeText(MainActivity.this, "You entered...."+store, Toast.LENGTH_SHORT).show(); 
         et.setText(" "); 
         scrollMyListViewToBottom(); 
         adapter.notifyDataSetChanged(); 

         } 
       //Screen auto scrollup.... 
       private void scrollMyListViewToBottom() { 
         list.post(new Runnable() { 
          @Override 
          public void run() { 
           // Select the last row so it will scroll into view... 
           list.setSelection(adapter.getCount() - 1); 
          } 
         }); 
       }}); 

      } 
      catch (JSONException e) 
      { 
       e.printStackTrace(); 
      } 
      } 
    } 
+0

당신은, 자원으로 추가 된 파일을 편집에 그것의 복사본을 만들 수 없습니다 당신의 응용 프로그램 데이터 폴더 –

답변

0

, 당신은 그 존재에 새로운 데이터를 기록, 다음 이전 jasonarray에 새로운 데이터를 추가 존재하는 파일에서 jsonarray을 구문 분석 할 수 ... 내 코드입니다 파일.

0

당신은 메모리에 파일을 다음 내장 메모리에 기록하기 위해이 방법을 시도 .load 런타임에 자산 폴더에있는 파일을 편집 할 수 없습니다 :

private void writeToFile(String jsonData) { 
try { 
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("single.json", Context.MODE_PRIVATE)); 
    outputStreamWriter.write(jsonData); 
    outputStreamWriter.close(); 
} 
catch (IOException e) { 
    Log.e("Exception", "File write failed: " + e.toString()); 
} 
} 
+0

이 파일에 쓰여지는 데이터는 무엇입니까? – Nevaeh

+1

이것은 내부 메모리에 쓰는 것입니다. 당신은 런타임에 자산 폴더에 파일을 변경하지 않습니다. 여기에 http://stackoverflow.com/questions/21637576/write-to-file-json-into-assets-folder-android –

+0

오 ok.so 내가 사용하고 있습니다. 실시간으로 json URL을, 나는 할 수 있지만 자산 폴더에있는 JSON 파일에 맞지 않습니까? – Nevaeh

관련 문제