there is such a code; switching the list / grid is done through the menu; I want to make it so that it is not just visible / unvisible, but through fragments. tell me how to properly implement? I tried to set the following condition here: if true then load Activity1, otherwise Activity2, which in turn loaded its fragments, but not that .. because you have to duplicate all the code from mainActivity, if you leave only the adapter and the filling in fragments, then again I first need to prescribe something in the MainActivity setContentView..twinked completely .. what ideas?
@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.item) { boolean isChecked = !item.isChecked(); item.setChecked(isChecked); item.setTitle(isChecked ? "Show GridView" : "Show ListView"); showListView(isChecked); return true; } return false; } common code
public class MainActivity extends AppCompatActivity { private static ArrayList<Model_Melodies.Melodies> melodiesList; private Model_Melodies melodies; private ListView mListView; private GridView mGridView; protected static boolean mIsListVisible; private SharedPreferences mSettings; protected static AdapterListMelodies adapter; public final int LIMIT = 20; public final String BASE_URL = "https://api-content-beeline.intech-global.com"; public int countItems = 0; public String JSON_URL = BASE_URL + "/public/marketplaces/1/tags/4/melodies/?limit=%d&from=%d"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity_fragment); mSettings = getPreferences(MODE_PRIVATE); melodies = new Model_Melodies(); melodies.setMelodies(melodiesList); melodiesList = new ArrayList<>(); adapter = new AdapterListMelodies(MainActivity.this, melodiesList); mListView = (ListView) findViewById(R.id.listView1); if (mListView != null) { mListView.setAdapter(adapter); } mGridView = (GridView) findViewById(R.id.gridLayout); if (mGridView != null) { mGridView.setAdapter(adapter); } customLoadMoreDataFromApi(countItems); mListView.setOnScrollListener(new EndlessScrollListener() { @Override public boolean onLoadMore(int page, int totalItemsCount) { customLoadMoreDataFromApi(page); return true; } }); mGridView.setOnScrollListener(new EndlessScrollListener() { @Override public boolean onLoadMore(int page, int totalItemsCount) { customLoadMoreDataFromApi(page); return true; } }); } private void customLoadMoreDataFromApi(int page) { countItems = LIMIT * page; RequestQueue queue = Volley.newRequestQueue(this); JsonObjectRequest jsObjRequest = new JsonObjectRequest( Request.Method.GET, String.format(JSON_URL, LIMIT, countItems), null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { toList(response); } catch (JSONException e) { e.printStackTrace(); } adapter.notifyDataSetChanged(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); queue.add(jsObjRequest); } public ArrayList toList(JSONObject response) throws JSONException { JSONArray values = response.getJSONArray("melodies"); for (int i = 0; i < values.length(); i++) { JSONObject o = (JSONObject) values.get(i); melodiesList.add(new Model_Melodies.Melodies( o.getString("picUrl"), o.getString("title"), o.getString("artist"), o.getString("demoUrl"))); } return melodiesList; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); menu.findItem(R.id.item).setChecked(mIsListVisible); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.item) { boolean isChecked = !item.isChecked(); item.setChecked(isChecked); item.setTitle(isChecked ? "Show GridView" : "Show ListView"); showListView(isChecked); return true; } return false; } private void showListView(boolean show) { mIsListVisible = show; mListView.setVisibility(show ? View.VISIBLE : View.GONE); mGridView.setVisibility(show ? View.GONE : View.VISIBLE); } @Override protected void onResume() { super.onResume(); showListView(mSettings.getBoolean("show_list", true)); } @Override protected void onPause() { super.onPause(); mSettings.edit().putBoolean("show_list", mIsListVisible).apply(); } } UPDATE: fixed the adapter inherited from the Baseadapter, but still not something like that ..
public class AdapterListMelodies extends RecyclerView.Adapter<AdapterListMelodies.ViewHolder> { private Context mContext; private ArrayList<Model_Melodies.Melodies> items; private DisplayImageOptions options; private Model_Melodies.Melodies modelMelodiesMelodies; protected ImageLoader imageLoader = ImageLoader.getInstance(); public AdapterListMelodies(Context context, ArrayList<Model_Melodies.Melodies> items) { mContext = context; this.items = items; } @Override public void onBindViewHolder(ViewHolder holder, int position) { modelMelodiesMelodies = items.get(position); holder.nameArtist.setText(modelMelodiesMelodies.getArtist()); final Model_Melodies.Melodies modelMelodiesMelodiesCopy = modelMelodiesMelodies; holder.nameArtist.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.getId() == R.id.nameArtist) { Intent i = new Intent(mContext, Activity_Player.class); String imgUri = modelMelodiesMelodiesCopy.getPicUrl(); String soundUri = modelMelodiesMelodiesCopy.getDemoUrl(); i.putExtra(Activity_Player.EXTRA_IMAGE_URL, imgUri); i.putExtra(Activity_Player.EXTRA_SOUND_URL, soundUri); mContext.startActivity(i); } } }); holder.nameSounds.setText(modelMelodiesMelodies.getTitle()); imageLoader = ImageLoader.getInstance(); imageLoader.init(ImageLoaderConfiguration.createDefault(mContext)); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) .showImageForEmptyUri(R.drawable.ic_empty) .showImageOnFail(R.drawable.ic_error) .imageScaleType(ImageScaleType.IN_SAMPLE_INT) .cacheInMemory(true) .cacheOnDisk(true) .build(); imageLoader.displayImage(modelMelodiesMelodies.getPicUrl(), holder.cover, options); } @Override public long getItemId(int position) { return position; } @Override public int getItemCount() { return items.size(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.listitems, parent, false); ViewHolder pvh = new ViewHolder(v); return pvh; } public static class ViewHolder extends RecyclerView.ViewHolder { public ImageView cover; public TextView nameArtist; public TextView nameSounds; public ViewHolder(View itemView) { super(itemView); nameArtist = (TextView) itemView.findViewById(R.id.nameArtist); nameSounds = (TextView) itemView.findViewById(R.id.nameSounds); cover = (ImageView) itemView.findViewById(R.id.imageView1); } } } UPDATE2:
public class ListFragment extends Fragment {private static View view; private ListView mListView;
@Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.list_customview,container,false); mListView = (ListView) view.findViewById(R.id.listView1); if (mListView != null) { mListView.setAdapter(MainActivity.adapter); } MainActivity.adapter.notifyDataSetChanged(); return view; } }