2016-08-19 3 views
1

私はどのようにデータをサーバに送信し、そのサーバからリストビューを送信したデータで更新できますか?データ送信プロセスとリストビューは同じフラグメントにあることに注意してください。どのように私は同じフラグメント内のjsonからサーバとインスタントアップデートリストビューを送ることができます

ここに私のコードです。それは動作しますが、データを送信して同じアクティビティを開くと更新されず、大学名とグループ名が表示されないか、nullになりますが、他のアクティビティに移動して戻ると、リストビューが更新されます。

public class GroupWallActivity extends AppCompatActivity { 

    ImageView groupProPic; 
    TextView groupName; 
    TextView varsity; 

    String userIdString; 
    public String groupIdString; 
    String groupNameString; 
    String universityNameString; 

    private ProgressDialog progressDialog; 

    private SQLiteHandler db; 
    private SessionManager session; 

    FragmentOne fragmentOne; 
    FragmentTwo fragmentTwo; 


    private TabLayout tabLayout; 
    private ViewPager viewPager; 

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

     groupName= (TextView) findViewById(R.id.groupNameTV); 
     varsity= (TextView) findViewById(R.id.varsityTV); 
     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 

     // SqLite database handler 
     db = new SQLiteHandler(getApplicationContext()); 

     // session manager 
     session = new SessionManager(getApplicationContext()); 
     if (!session.isLoggedIn()) { 
      logoutUser(); 
     } 
     groupNameString=getIntent().getStringExtra("GroupName"); 
     universityNameString=getIntent().getStringExtra("UniversityName"); 
     groupName.setText(groupNameString); 
     varsity.setText(universityNameString); 


     viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 

      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

    } 

    public void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     groupIdString=getIntent().getStringExtra("GroupId"); 
     userIdString=getIntent().getStringExtra("UserId"); 

     Bundle fragmentOneBundle = new Bundle(); 
     fragmentOneBundle.putString("group_id", groupIdString); 
     fragmentOneBundle.putString("userId",userIdString); 
     fragmentOneBundle.putString("groupName",groupNameString); 
     fragmentOneBundle.putString("universityName",universityNameString); 
     fragmentOne = new FragmentOne(); 
     fragmentOne.setArguments(fragmentOneBundle); 




     Bundle fragmentTwoBundle=new Bundle(); 
     fragmentTwoBundle.putString("group_id", groupIdString); 
     fragmentTwo = new FragmentTwo(); 
     fragmentTwo.setArguments(fragmentTwoBundle); 

     adapter.addFragment(fragmentOne, "Post"); 
     adapter.addFragment(fragmentTwo, "Member"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(android.support.v4.app.FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 

    private void logoutUser() { 
     session.setLogin(false); 
     db.deleteUsers(); 

     // Launching the login activity 
     Intent intent = new Intent(GroupWallActivity.this, LoginActivity.class); 
     startActivity(intent); 
     finish(); 
    } 


    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.appbar_menu, menu); 
     return true; 
    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.logout) { 

      logoutUser(); 
     } 

     return super.onOptionsItemSelected(item); 
    } 

} 

FRAGMENT

public class FragmentOne extends Fragment implements View.OnClickListener { 

    private static final String TAG = FragmentOne.class.getSimpleName(); 

    private ProgressDialog progressDialog; 

    private TabLayout tabLayout; 
    private ViewPager viewPager; 

    Button postButton; 
    EditText postText; 
    ListView postListView; 


    private String groupIdString; 
    private String userIdString; 
    private String postBody; 
    private String groupNameString; 
    private String universityNameString; 

    private SQLiteHandler db; 
    ArrayList<PostModel> postList; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

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



     postButton= (Button) view.findViewById(R.id.postBtn); 
     postText= (EditText) view.findViewById(R.id.postTextET); 
     postListView= (ListView) view.findViewById(R.id.postListLV); 

     groupIdString =getArguments().getString("group_id"); 
     userIdString =getArguments().getString("userId"); 
     groupNameString=getArguments().getString("groupName"); 
     universityNameString=getArguments().getString("universityName"); 


     progressDialog = new ProgressDialog(getActivity().getApplicationContext()); 
     progressDialog.setCancelable(false); 

     db = new SQLiteHandler(getActivity().getApplicationContext()); 
     postList=db.getPostFromPostTable(groupIdString); 
     if(postList.size()!=0 && postList.size()>0) { 


      final CustomAdapterPost customAdapterPost = new CustomAdapterPost(getActivity().getApplicationContext(), 0, postList); 
      postListView.setAdapter(customAdapterPost); 
     } 

     postButton.setOnClickListener(this); 

     return view; 
    } 

    @Override 
    public void onClick(View view) { 

     postBody=postText.getText().toString().trim(); 
     postAnnouncement(userIdString,groupIdString,postBody); 


    } 


    private void postAnnouncement(final String userId,final String groupId,final String postBody) { 


     String tag_string_req = "req_register"; 

     progressDialog.setMessage("Posting ..."); 

     StringRequest strReq = new StringRequest(Request.Method.POST, 
       AppConfig.URL_POST, new Response.Listener<String>() { 

      @Override 
      public void onResponse(String response) { 

       Log.d(TAG, "Post Response: " + response.toString()); 

       try { 


        JSONObject jObj = new JSONObject(response); 
        boolean error = jObj.getBoolean("error"); 
        if (!error) { 
         // User successfully stored in MySQL 
         // Now store the user in sqlite 


         JSONArray groupArray = jObj.optJSONArray("mypost"); 

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

          JSONObject post = groupArray.getJSONObject(i); 

          String postUniqueId = post.getString("post_unique_id"); 
          String userUniqueId = post.getString("user_unique_id"); 
          String groupUniqueId= post.getString("group_unique_id"); 
          String userName = post.getString("user_name"); 
          String postBody = post.getString("post_body"); 
          String createdAt = post.getString("created_at"); 

          // Inserting row in table 
          db.addPostToPostTable(postUniqueId, userUniqueId, groupUniqueId, userName, postBody, createdAt); 

         } 

         // Launch GroupWall activity 
         Intent intent = new Intent(getActivity().getApplicationContext(), GroupWallActivity.class); 
         intent.putExtra("UserId",userIdString); 
         intent.putExtra("GroupId",groupIdString); 
         intent.putExtra("GroupName",groupNameString); 
         intent.putExtra("UniversityName",universityNameString); 
         startActivity(intent); 




        } else { 

         // Error occurred in registration. Get the error 
         // message 
         String errorMsg = jObj.getString("error_msg"); 
         Toast.makeText(getActivity().getApplicationContext(), 
           errorMsg, Toast.LENGTH_LONG).show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 



      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Post Error: " + error.getMessage()); 
       Toast.makeText(getActivity().getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() { 
       // Posting params to register url 
       Map<String, String> params = new HashMap<String, String>(); 

       params.put("user_unique_id", userId); 
       params.put("group_unique_id", groupId); 
       params.put("post_body", postBody); 


       return params; 
      } 

     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext()); 
     requestQueue.add(strReq); 
    } 
} 

答えて

0

notifydatasetchanged()アダプタに呼び出してみてください。

関連する問題