Мне нужно отображать данные поверх RecyclerView после обновления в обратном порядке

Переработайте список загрузки просмотра и достигните вверху по mList.add (0, субъект), но я хочу перевернуть список.

также я изменил свой код вот так,

   mLayoutManager.setReverseLayout(true);
   mList.add(0,actor);

Вот моя информация о recycleview, это мой код api recyclview InfoJson () здесь:

public class GatekeeperInfoActivity  extends BaseActivity implements View.OnClickListener , MyComplaintListner  {
private RecyclerView mRecyclerView;
private GateInfoAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private List<GateInfoPojo> mList;
Context ctx;
String visitor_id,id,cid;
M_Shared_Pref m_shared_pref;
ImageView back_button, img;
private MyDialog dialog;
TextView complaint,subject,msg,from_name_txt;
ImageView attach;
String from_id,from_name,from_mobile;
String id_rwa,new_id;
public static final int DISMISS_TIMEOUT = 2000;
LinearLayout ll_no_data;

int limit =0;
int limit_refresh;
static int nums;
private appconfig.EndlessRecyclerOnScrollListener scrollListener;
LinearLayoutManager linearLayoutManager;
public int overallXScrol = 0;
Button button;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rwa_view_info);
    ctx = GatekeeperInfoActivity.this;

    dialog = new MyDialog(this);
    m_shared_pref = new M_Shared_Pref(GatekeeperInfoActivity.this);
    visitor_id = m_shared_pref.getPrefranceStringValue(App_Info.Visitor_ID);
    id = m_shared_pref.getPrefranceStringValue(App_Info.Flat_User_Id);
    cid = m_shared_pref.getPrefranceStringValue(App_Info.Flat_User_Id_cid);

    Bundle bundle = this.getIntent().getExtras();
    from_id = bundle.getString("id");
    from_name = bundle.getString("name");
    from_mobile = bundle.getString("mobile");



    id_rwa = getIntent().getStringExtra("id_rwa");

    if (from_id != null && !from_id.isEmpty() && !from_id.equals("null"))
    { new_id = from_id; }

    else{ new_id = id_rwa; }
    System.out.println("check:check"+from_id+":"+id_rwa);

    ///// using this   new_id

    mList = new ArrayList<GateInfoPojo>();
    mRecyclerView = findViewById(R.id.my_recycler_view);

    mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mAdapter = new GateInfoAdapter(mList, ctx);


    ll_no_data = findViewById(R.id.ll_no_data);


    mAdapter.setMyClickListener(this);



  /*  button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            limit_refresh = nums+limit;
            limit = limit_refresh;
            if (nums>=20){
                //  item_progress_bar.setVisibility(View.VISIBLE);
                InfoJson();
            }
        }
    });*/



    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (!recyclerView.canScrollVertically(-1)) {
                //  Toast.makeText(GatekeeperInfoActivity.this, "Last", Toast.LENGTH_LONG).show();

                limit_refresh = nums+limit;
                limit = limit_refresh;
                if (nums>=20){
                    //  item_progress_bar.setVisibility(View.VISIBLE);
                    InfoJson();
                }
            }
        }
    });


    img = findViewById(R.id.pic);
    from_name_txt = findViewById(R.id.from_name_txt);

    attach = findViewById(R.id.attach);
    msg = findViewById(R.id.msg);
    complaint = findViewById(R.id.complaint);
    subject = findViewById(R.id.subject);

    back_button = findViewById(R.id.back_button);
    back_button.setOnClickListener(this);
    attach.setOnClickListener(this);







    if (NetWorkCheck.checkConnection(GatekeeperInfoActivity.this)){
        mList.clear();
        InfoJson();
    }
    else{
        TastyToast.makeText(getApplicationContext(), "Internet connection is disable", TastyToast.LENGTH_LONG, TastyToast.WARNING);
    }

}



@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.back_button:
            finish();
            break;


        case R.id.attach:
            if (msg.getText().toString().length()>0){
                submitReply(msg.getText().toString(),new_id);
            }
            else{
                TastyToast.makeText(getApplicationContext(), "Enter Message", TastyToast.LENGTH_LONG, TastyToast.INFO);

            }
            break;
    }
}


public void InfoJson() {
    dialog.ShowProgressDialog();
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, Constant.Base_Url+"AllChatWithUser.php?", new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                dialog.CancelProgressDialog();

                JSONObject obj = new JSONObject(response);
                String error = obj.getString("error");


                nums = obj.getInt("nums");
                System.out.println("limit_limit_num"+nums);
                if (nums>=1) {
                    if (error.equals("true")) {
                        from_name_txt.setText("GateKeeper : " + obj.getString("names"));
                        JSONArray tower = obj.getJSONArray("Flat");

                        for (int i = 0; i < tower.length(); i++) {
                            JSONObject jsonnew = tower.getJSONObject(i);

                            GateInfoPojo actor = new GateInfoPojo();
                            String id = jsonnew.getString("id");
                            String Reply_From = jsonnew.getString("reply_from");
                            String message = jsonnew.getString("message");
                            String reply_date = jsonnew.getString("send_time");
                            String usertype = jsonnew.getString("usertype");

                            actor.setId(id);
                            actor.setReply_from(Reply_From);
                            actor.setMessage(message);
                            actor.setSend_time(reply_date);
                            actor.setUsertype(usertype);

                            if (limit==0){
                                mList.add(actor);
                            }
                            else{
                                mList.add(0,actor);
                            }
                            mAdapter.notifyDataSetChanged();
                            mRecyclerView.setAdapter(mAdapter);
                            mRecyclerView.getLayoutManager().scrollToPosition(nums - 1);
                        }


                    }
                }
                else
                {
                    mRecyclerView.setVisibility(View.GONE);
                    ll_no_data.setVisibility(View.VISIBLE);
                    //  TastyToast.makeText(getApplicationContext(),  obj.getString("msg"), TastyToast.LENGTH_LONG, TastyToast.ERROR);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            dialog.CancelProgressDialog();
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("empid", new_id);
            params.put("fid", id);
            params.put("usertype", "FlatUser");
            params.put("limit", String.valueOf(limit));
            Log.e("params", String.valueOf(params));
            return params;
        }
    };

    requestQueue.add(stringRequest);
}

@Override
public void onItemClick(View v, Object bean, String feed, String rating,String comp_spinner) {
    String complaint_id = ((GateInfoPojo) bean).getId();
    // submitComplaintInfo(complaint_id,feed,rating,comp_spinner);
}

@Override
public void onItemClickActivity(View v, Object bean) {
    String complaint_id = ((GateInfoPojo) bean).getId();
}

public void submitReply(final String msg1,final String new_id) {
    dialog.ShowProgressDialog();
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, Constant.Base_Url+"ChatWithUser.php?", new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                dialog.CancelProgressDialog();
                JSONObject obj = new JSONObject(response);
                String error = obj.getString("error");

                if (error.equals("true"))
                {
                    //  TastyToast.makeText(getApplicationContext(),  obj.getString("msg"), TastyToast.LENGTH_LONG, TastyToast.SUCCESS);
                    msg.setText("");
                    InfoJson();
                    mList.clear();
                }
                else
                {
                    TastyToast.makeText(getApplicationContext(),  obj.getString("msg"), TastyToast.LENGTH_LONG, TastyToast.ERROR);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            dialog.CancelProgressDialog();
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("fid", id);
            params.put("empid", new_id);
            params.put("usertype", "FlatUser");
            params.put("message", msg1);
            Log.e("params", String.valueOf(params));
            return params;
        }
    };

    requestQueue.add(stringRequest);
}

}

Но это не работает, его добавление вверху, но не реверсирование данных api снизу вверх. Любая помощь будет оценена по достоинству.

Ваш вопрос непонятен, можете ли вы его более правильно перефразировать. вы хотите отменить данные в списке? или добавить новый элемент в конец списка?

karan 31.10.2018 07:21

@Karan Mer, я хочу перевернуть данные в списке, распечатать снизу вверх, вот мой API,

Harish 31.10.2018 07:34
ayonvisitorbook.com/json/…
Harish 31.10.2018 07:34

где вы устанавливаете данные адаптера, я не вижу, чтобы ваши данные были переданы адаптеру.

karan 31.10.2018 07:39

@Karan Mer, у меня есть полный код, я буду благодарен за любую помощь.

Harish 31.10.2018 08:29
0
5
81
3

Ответы 3

Вы можете перевернуть список массивов с помощью -

Collections.reverse(mList);

После этого setAdapter() или notifyDataSetChanged() в соответствии с вашими требованиями.

      public void InfoJson() {
    dialog.ShowProgressDialog();
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, Constant.Base_Url+"AllChatWithUser.php?", new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                dialog.CancelProgressDialog();

                JSONObject obj = new JSONObject(response);
                String error = obj.getString("error");


                nums = obj.getInt("nums");
                System.out.println("limit_limit_num"+nums);
                if (nums>=1) {
                    if (error.equals("true")) {
                        from_name_txt.setText("GateKeeper : " + obj.getString("names"));
                        JSONArray tower = obj.getJSONArray("Flat");

                        for (int i = 0; i < tower.length(); i++) {
                            JSONObject jsonnew = tower.getJSONObject(i);

                            GateInfoPojo actor = new GateInfoPojo();
                            String id = jsonnew.getString("id");
                            String Reply_From = jsonnew.getString("reply_from");
                            String message = jsonnew.getString("message");
                            String reply_date = jsonnew.getString("send_time");
                            String usertype = jsonnew.getString("usertype");

                            actor.setId(id);
                            actor.setReply_from(Reply_From);
                            actor.setMessage(message);
                            actor.setSend_time(reply_date);
                            actor.setUsertype(usertype);

                         if (limit==0){

                              mList.add(actor);

                            }
                            else{

                              mList.add(0,actor);
                            }

                        }
                        Collections.reverse(mList);
                        mAdapter.notifyDataSetChanged();
                        mRecyclerView.setAdapter(mAdapter);
                      //  mRecyclerView.getLayoutManager().scrollToPosition(nums - 1);
                    }
                }
                else
                {
                    mRecyclerView.setVisibility(View.GONE);
                    ll_no_data.setVisibility(View.VISIBLE);
                    //  TastyToast.makeText(getApplicationContext(),  obj.getString("msg"), TastyToast.LENGTH_LONG, TastyToast.ERROR);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            dialog.CancelProgressDialog();
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("empid", new_id);
            params.put("fid", id);
            params.put("usertype", "FlatUser");
            params.put("limit", String.valueOf(limit));
            Log.e("params", String.valueOf(params));
            return params;
        }
    };

    requestQueue.add(stringRequest);
}

Я проверю и дам вам знать.

Harish 31.10.2018 08:25

Не работает. список не перевернут этим.

Harish 31.10.2018 09:12

Попробуйте добавить следующий код, оба они должны быть верными.

mLayoutManager.setStackFromEnd(true);
mLayoutManager.setReverseLayout(true);

Из OnCreate() удалите сетевой адаптер, так как в вашем списке еще нет данных.

и в вашем onResponse() отмените список данных перед его настройкой

Collections.reverse(mList);
mAdapter = new GateInfoAdapter(mList, ctx);
mRecyclerView.setAdapter(mAdapter);

Другие вопросы по теме