刷新当前页面而不闪烁android

时间:2017-03-18 17:42:28

标签: android listview android-intent refresh messenger

我的应用程序有一个列表和一个按钮,用于将元素添加到列表中并在同一活动中重新加载,按下按钮我需要重新加载活动而不闪烁或重新加载的时间就像在messenger中发送消息时一样。尝试以下代码:

       recreate()
       tvSender.setText("");

这段代码:

       Intent intent = getIntent();
       finish();
       intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
       startActivity(intent);

这有效,但它仍然不是我想要的任何帮助请

完整代码:

public class ChatRoom extends AppCompatActivity {


String username;

String username1;

TextView userroom;

String image1;

Message_adapter adapter;

ListView L_MESSAGES;

ArrayList<Messages> messages= new ArrayList<Messages>();

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

    Intent intent = getIntent();
    username = intent.getStringExtra("username");
    username1 = intent.getStringExtra("username1");
      userroom =(TextView) findViewById(R.id.userroom);


    final EditText tvSender =(EditText) findViewById(R.id.Sender);

    final ImageButton btSender=(ImageButton)findViewById(R.id.btSender);
    final ImageButton btBack=(ImageButton)findViewById(R.id.back);

    btBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(ChatRoom.this, ChatActivity.class);
            intent.putExtra("username", username);
            intent.putExtra("username1", username1);

            ChatRoom.this.startActivity(intent);

        }
    });

    btSender.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            final String message=tvSender.getText().toString();


            Response.Listener<String> responselistener = new Response.Listener<String>() {

                        @Override
                        public void onResponse(String response) {
                            try {
                                JSONObject jsonObject = new JSONObject(response);
                                boolean success = jsonObject.getBoolean("success");
                                if (success) {


                                    recreate();
                                    tvSender.setText("");


                                    }


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


                    MessageSender loginrequest = new MessageSender(message, username,username1, responselistener);
                    RequestQueue queue = Volley.newRequestQueue(ChatRoom.this);
                    queue.add(loginrequest);

        }
    });




getsendMessages();




}







private void getsendMessages(){

    String url =config_message.DATA_URL1+username+"&username1="+username1;

    userroom.setText(username1);
    StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            showJsonFriend(response);
        }
    },

            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError volleyError) {
                    Toast.makeText(ChatRoom.this,volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
                }
            }


    );
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}


private  void showJsonFriend(String response) {


    try {
        JSONObject jsonObject = new JSONObject(response);
        JSONArray result = jsonObject.getJSONArray(config_message.JSON_ARRAY);
        JSONObject collegeData =null;
        messages.clear();
        for(int i=0;i<result.length();i++) {
            collegeData = result.getJSONObject(i);
            String friend = collegeData.getString(config_message.KEY_SENDER);
            image1 = collegeData.getString(config_message.KEY_IMAGE);
            String time = collegeData.getString(config_message.KEY_Time);
            String sender = collegeData.getString(config_message.KEY_Sender);

            messages.add(new Messages(friend,image1,time,sender));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

   L_MESSAGES=(ListView) findViewById(R.id.chatRoomsList);
     adapter = new Message_adapter(this,messages);

    L_MESSAGES.setAdapter(adapter);
    L_MESSAGES.setSelection(L_MESSAGES.getAdapter().getCount()-1);


}

}

这是刷新列表的按钮:

 public void onClick(View v) {


            final String message=tvSender.getText().toString();


            Response.Listener<String> responselistener = new Response.Listener<String>() {

                        @Override
                        public void onResponse(String response) {
                            try {
                                JSONObject jsonObject = new JSONObject(response);
                                boolean success = jsonObject.getBoolean("success");
                                if (success) {


                                    recreate();
                                    tvSender.setText("");


                                    }


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


                    MessageSender loginrequest = new MessageSender(message, username,username1, responselistener);
                    RequestQueue queue = Volley.newRequestQueue(ChatRoom.this);
                    queue.add(loginrequest);

        }
    });

1 个答案:

答案 0 :(得分:0)

无需重新启动整个Activity。相反,您可以在列表数据集中插入一个元素(ArrayList<>或其他内容)并调用adapter.notifyDataSetChanged()以在listview中进行更改。