2016-04-03 11 views
-1

データベース内のデータを更新するための更新フラグメントがあります。更新が完了すると、私は 'データベースからデータを見る'という断片に戻り、リストを更新する必要があります。私はこの内部onResume()のコードを記述する必要があると思うが、私はそれを行う方法を知らない。 「断片データベースからのデータを表示する」の コード:リストアイテムが更新された後にリストビューアイテムを更新する方法 - onResumeで使用される

public class Testing extends Fragment { 
String uname="921312104053"; 
private static final String TAG_RESULTS="result"; 
private static final String TAG_Sname = "Subject_name"; 
private static final String TAG_Scode = "Subject_code"; 
private static final String TAG_Sgrade ="Grade"; 
ListView lv; 
JSONArray subjects = null; 
String myJSON; 
ListAdapter adapter; 
ArrayList<HashMap<String, String>> subList,subList1; 
public Testing() { 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_testing, 
      container, false); 

    disp(view); 



    return view; 
} 
public void disp(View view) 
{ 
    lv = (ListView)view.findViewById(R.id.list); 
    subList = new ArrayList<HashMap<String,String>>(); 
    getData(view); 

} 
public void getData(View view){ 
    class GetDataJSON extends AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... params) { 
      DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams()); 
      HttpPost httppost = new HttpPost("http://10.0.2.2/markolepsy/android_connect/testing.php?usrname="+uname); 


      httppost.setHeader("Content-type", "application/json"); 

      InputStream inputStream = null; 
      String result = null; 
      try { 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 

       inputStream = entity.getContent(); 

       BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
       StringBuilder sb = new StringBuilder(); 

       String line = null; 
       while ((line = reader.readLine()) != null) 
       { 
        sb.append(line + "\n"); 
       } 
       result = sb.toString(); 
      } catch (Exception e) { 

      } 
      finally { 
       try{if(inputStream != null)inputStream.close();}catch(Exception squish){} 
      } 
      return result; 
     } 

     @Override 
     protected void onPostExecute(String result){ 
      myJSON=result; 
      showList(); 
     } 
    } 
    GetDataJSON g = new GetDataJSON(); 
    g.execute(); 
} 
protected void showList(){ 
    try { 
     JSONObject jsonObj = new JSONObject(myJSON); 
     subjects = jsonObj.getJSONArray(TAG_RESULTS); 

     for(int i=0;i<subjects.length();i++){ 
      JSONObject c = subjects.getJSONObject(i); 
      String sname = c.getString(TAG_Sname); 
      String scode = c.getString(TAG_Scode); 
      String sgrade = c.getString(TAG_Sgrade); 

      HashMap<String,String> records = new HashMap<String,String>(); 

      records.put(TAG_Sname,sname); 
      records.put(TAG_Scode,scode); 
      records.put(TAG_Sgrade,sgrade); 

      subList.add(records); 
     } 

     adapter = new SimpleAdapter(
       getActivity(), subList, R.layout.list_layout, 
       new String[]{TAG_Sname,TAG_Scode,TAG_Sgrade}, 
       new int[]{R.id.subject_name, R.id.subject_code, R.id.grade} 
     ); 

     lv.setAdapter(adapter); 

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

} 
} 

答えて

0

ニーズを、スイートもnotifyDataSetChanged()を使用します。

これを参照してください:How to refresh Android listview?

編集:

 adapter = new SimpleAdapter(
      getActivity(), subList, R.layout.list_layout, 
      new String[]{TAG_Sname,TAG_Scode,TAG_Sgrade}, 
      new int[]{R.id.subject_name, R.id.subject_code, R.id.grade} 
    ); 

    lv.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 

上記のコードは役立つはずですが。

+0

notifyDataSetChangedは、ListAdapterのメソッドではなく、BaseAdapterのメソッドです。私が 'adapter.notifyDataSetChanged();'を追加すると、それは返すことができないと言います –

+0

は、((BaseAdapter)アダプタ).setNotifyDataSetChanged()を使ってみましたが、 "java.lang.NullPointerException:仮想メソッドを呼び出そうとしました。 '' nullオブジェクト参照上で 'android.widget.BaseAdapter.notifyDataSetChanged() –