ListView frissítés Spinnerrel

ListView frissítés Spinnerrel
2017-05-03T09:26:28+02:00
2017-05-03T13:50:55+02:00
2022-08-10T15:40:31+02:00
d3ad
Sziasztok!

Adott egy ListView és egy Spinner. A spinnerrel tudom kiválasztani, hogy milyen módon rendezze sorrendben a listákat, de ezt webservice lekezeli nekem csak elkell küldeni, a kiválasztott Item-t. Ezzel nincs is gondom. 
A probléma az, hogy amikor új item-t választok nem tudom lefrissíteni a listát. Azon is gondolkoztam, hogy lehetséges, hogy ilyenkor újra el kellene küldenem a JSON kérést is, de ezt sem tudtam megoldani.
Mutasd a teljes hozzászólást!
oké azt értem hogy csúnya a kód és meg is fogom fogadni a tanácsaidat, de ha már így van nem akarnám átírni az egészet, inkább csak megoldani
Mutasd a teljes hozzászólást!

  • Kod?
    Mit probaltal hogyan?

    Egyebkent meg vagy ujra kuldod a kerest es ujra csinalsz adaptert az itemekkel.

    Vagy ha ugyanaz csak szurod, akkor azt lekezeled az adapterben. 

    Vagy siman adapterbe az itemeket ujra hozzaadod egy setterrel majd notifydatasetchanged
    Mutasd a teljes hozzászólást!
  • A kérés és utána a tárolás a listában:

    public void JSONDownload(String item){ requestQueue = Volley.newRequestQueue(ToplistActivity.this); String url = Consts.GetUrl("gallery",item,1); Log.d("item",item); InitResponse(); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, successResponse, failedResponse); requestQueue.add(jsonObjectRequest); requestQueue.start(); } public void InitResponse(){ //mPictureList.clear(); successResponse = new Response.Listener<JSONObject>() { JSONArray mJSONPictureArray; @Override public void onResponse(JSONObject response) { if(Consts.isNetwork(getBaseContext())) { try { mJSONPictureArray = response.getJSONArray("data"); for (int i = 0; i < mJSONPictureArray.length(); i++) { topPictureArray.add(mJSONPictureArray.getJSONObject(i).getString("title")); topPictureArray.add(mJSONPictureArray.getJSONObject(i).getString("mini")); topPictureArray.add(mJSONPictureArray.getJSONObject(i).getString("score")); topPictureArray.add(mJSONPictureArray.getJSONObject(i).getString("username")); //topPictureArray.add(mJSONPictureArray.getJSONObject(i).getJSONObject("created_at").getString("date")); } Log.d("toparray", String.valueOf(topPictureArray.size())); //mPictureList.add(new Picture(topPictureArray.get(0).toString(),topPictureArray.get(1).toString(), Integer.parseInt(topPictureArray.get(2)),topPictureArray.get(3).toString(),"date")); //Log.d("picture",String.valueOf(mPictureList.get(0))); for (int j = 0; j < topPictureArray.size(); j += 4) { mPictureList.add(new Picture(topPictureArray.get(j), Consts.BASE_SERVER_URL + topPictureArray.get(j + 1), Integer.parseInt(topPictureArray.get(j + 2)), topPictureArray.get(j + 3), "date" /*topPictureArray.get(j+4)*/)); } adapter = new TopListAdapter(getApplicationContext(), mPictureList); lvPicture.setAdapter(adapter); adapter.notifyDataSetChanged(); //addListenerOnSpinnerItemSelection(); } catch (JSONException e) { e.printStackTrace(); } } else{ Consts.ShowToast(getBaseContext(), getString(R.string.network_not_found)); } } }; failedResponse = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Consts.ShowToast(getBaseContext(), getString(R.string.Failed_toplist)); } }; }
    Az onCreate-ben a select:

    thatSpnr.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
     @Override
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
     InitResponse();
     JSONDownload(parent.getSelectedItem().toString());
     Log.d("jitem",parent.getSelectedItem().toString());
     }
     @Override
     public void onNothingSelected(AdapterView<?> parent) {
     }
    });


    És az adapter:

    public class TopListAdapter extends BaseAdapter { private Context mContext; private List<Picture> mPictureList; public TopListAdapter(Context mContext, List<Picture> mPictureList) { this.mContext = mContext; this.mPictureList = mPictureList; } @Override public int getCount() { return mPictureList.size(); } @Override public Object getItem(int position) { return mPictureList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = View.inflate(mContext, R.layout.item_toppicture_list, null); TextView tvTitle = (TextView) v.findViewById(R.id.tv_title); TextView tvCreatedAt = (TextView) v.findViewById(R.id.tv_createdAt); TextView tvScore = (TextView) v.findViewById(R.id.tv_score); TextView tvUser = (TextView) v.findViewById(R.id.tv_user); ImageView ivMini = (ImageView) v.findViewById(R.id.iv_mini); tvTitle.setText(mPictureList.get(position).getTitle()); tvCreatedAt.setText(mPictureList.get(position).getCreatedAt()); tvScore.setText(String.valueOf(mPictureList.get(position).getScore())); tvUser.setText(mPictureList.get(position).getUser()); Picasso.with(mContext).load(String.valueOf(mPictureList.get(position).getMini())).into(ivMini); v.setTag(mPictureList.get(position).getId()); return v; } }
    Mutasd a teljes hozzászólást!
  • szuper válasz-t találtam igaz, hogy ez recyclerview de a lényeg ugyan az.

    Android Creating Gmail Like Inbox using RecyclerView
    Mutasd a teljes hozzászólást!
  • Az initresponset 2szer hivod meg

    Par hint:

    Osztalynevek nagybetuvel kezdodnek. Metodusnevek kicsivel.

    Adapterben viewholdert hasznalunk.

    Retrofitet hasznalnek Volley helyett, attekinthetobb. 

    Attekintheto az osztalyra utalo neveket adunk. Nem azt, h Const.

    Ezeket a json letolto xarokat is kulon osztalyba kene rakni. Private, public keywordok.

    Egyebkent loggert hasznalnek a helyedben es logcatet, h lassam mi tortenik. Mikor mi hivodik meg. Etc.
    Mutasd a teljes hozzászólást!
  • oké azt értem hogy csúnya a kód és meg is fogom fogadni a tanácsaidat, de ha már így van nem akarnám átírni az egészet, inkább csak megoldani
    Mutasd a teljes hozzászólást!
  • Nekem jonak tunik. Ezert irtam hogy loggolj ahol kell.

    Nem kell atirni. Shift + f6 refactor. Rename. Kb 5 mperc.
    Mutasd a teljes hozzászólást!
abcd