Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在同一个片段中从json向服务器和即时更新listview发送数据_Android_Json_Listview_Fragment_Android Volley - Fatal编程技术网

Android 如何在同一个片段中从json向服务器和即时更新listview发送数据

Android 如何在同一个片段中从json向服务器和即时更新listview发送数据,android,json,listview,fragment,android-volley,Android,Json,Listview,Fragment,Android Volley,如何将数据发送到服务器并使用发送的数据更新该服务器的listview?请注意,数据发送进程和listview位于同一个片段中 这是我的密码。它可以工作,但当我发送数据并打开同一活动时,它没有更新,大学名称和组名称不显示或为空,但当转到其他活动并返回到它时,listview会更新 public class GroupWallActivity extends AppCompatActivity { ImageView groupProPic; TextView groupName;

如何将数据发送到服务器并使用发送的数据更新该服务器的listview?请注意,数据发送进程和listview位于同一个片段中

这是我的密码。它可以工作,但当我发送数据并打开同一活动时,它没有更新,大学名称和组名称不显示或为空,但当转到其他活动并返回到它时,listview会更新

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);
    }

}
公共类GroupWallActivity扩展了AppCompatActivity{
ImageView组Propic;
文本视图组名;
TextView大学;
字符串userIdString;
公共字符串groupIdString;
字符串组名称字符串;
字符串大学名称字符串;
私有进程对话;
私有SQLiteHandler数据库;
私人会话管理器会话;
零碎的一个零碎的一个;
碎片2碎片2;
私人摊位摊位;
私人视页机视页机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u group\u wall);
groupName=(TextView)findViewById(R.id.groupNameTV);
varsity=(TextView)findViewById(R.id.varsityTV);
viewPager=(viewPager)findViewById(R.id.viewPager);
设置viewPager(viewPager);
tabLayout=(tabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
//SqLite数据库处理程序
db=新的SQLiteHandler(getApplicationContext());
//会话管理器
session=newsessionmanager(getApplicationContext());
如果(!session.isLoggedIn()){
logoutUser();
}
groupNameString=getIntent().getStringExtra(“GroupName”);
universityNameString=getIntent().getStringExtra(“UniversityName”);
groupName.setText(groupNameString);
大学名称;
viewPager.addOnPageChangeListener(新的viewPager.OnPageChangeListener(){
@凌驾
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
}
@凌驾
已选择页面上的公共无效(内部位置){
}
@凌驾
公共无效onPageScrollStateChanged(int状态){
}
});
}
公共无效设置ViewPager(ViewPager ViewPager){
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager());
groupIdString=getIntent().getStringExtra(“GroupId”);
userIdString=getIntent().getStringExtra(“UserId”);
Bundle fragmentOneBundle=新Bundle();
putString(“group_id”,groupIdString);
putString(“userId”,userIdString);
putString(“groupName”,groupNameString);
putString(“universityName”,universityNameString);
fragmentOne=新的fragmentOne();
fragmentOne.setArguments(fragmentOneBundle);
Bundle fragmentTwoBundle=新Bundle();
fragmentTwoBundle.putString(“组id”,groupIdString);
fragmentTwo=新的fragmentTwo();
fragmentTwo.setArguments(fragmentTwoBundle);
adapter.addFragment(fragmentOne,“Post”);
adapter.addFragment(fragmentTwo,“成员”);
viewPager.setAdapter(适配器);
}
类ViewPagerAdapter扩展了FragmentPagerAdapter{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
public ViewPagerAdapter(android.support.v4.app.FragmentManager){
高级经理;
}
@凌驾
公共片段getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回MFFragmentList.size();
}
public void addFragment(片段片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
}
私有void logoutUser(){
session.setLogin(false);
db.deleteUsers();
//启动登录活动
意向意向=新意向(GroupWallActivity.this、LoginActivity.class);
星触觉(意向);
完成();
}
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.appbar_菜单,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.logout){
logoutUser();
}
返回super.onOptionsItemSelected(项目);
}
}
碎片

    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);
    }
}
公共类FragmentOne扩展片段实现View.OnClickListener{
私有静态最终字符串标记=FragmentOne.class.getSimpleName();
私有进程对话;
私人摊位摊位;
私人视页机视页机;
按钮postButton;
编辑文本postText;
ListView-postListView;
私有字符串groupIdString;
私有字符串userIdString;
私有字符串postBody;
私有字符串groupNameString;
私立字符串大学名称字符串;
私有SQLiteHandler数据库;
ArrayList postList;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图v