Два реселлера не отображаются в одном макете - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь реализовать два маклера в одном макете с одним и тем же адаптером.но отображается только один обзор утилизатора.

MainActivity.java

public class MainActivity extends AppCompatActivity {

List<DataAdapter> ListOfdataAdapter;

String HTTP_JSON_URL = "http://example.com";
String Image_Name_JSON = "Menu_name";
String Image_URL_JSON = "Menu_image";

JsonArrayRequest RequestOfJSonArray ;
RequestQueue requestQueue ;
View view ;

int RecyclerViewItemPosition ;
RecyclerView.LayoutManager layoutManagerOfrecyclerView;
RecyclerView.Adapter recyclerViewadapter;
ArrayList<String> ImageTitleNameArrayListForClick;

long Category_ID;
String MenuAPI;

private RecyclerView secondRecyclerView;
private RecyclerView.LayoutManager secondLayoutManager;
private RecyclerView firstrecyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    ImageTitleNameArrayListForClick = new ArrayList<>();

    // menu API url

    Intent iGet = getIntent();
    Category_ID = iGet.getLongExtra("category_id",0);

    MenuAPI += Category_ID;

    ListOfdataAdapter = new ArrayList<>();

    firstrecyclerView = (RecyclerView) findViewById(R.id.recyclerview1);
    firstrecyclerView.setHasFixedSize(true);
    layoutManagerOfrecyclerView = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, true);
    firstrecyclerView.setLayoutManager(layoutManagerOfrecyclerView);
    firstrecyclerView.post(new Runnable() {
            @Override
            public void run() {
                JSON_HTTP_CALL();// a method which requests remote data 
            }
        });


    secondRecyclerView = (RecyclerView) findViewById(R.id.recyclerview2);
    secondRecyclerView.setHasFixedSize(true);
    secondLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, true);
    secondRecyclerView.setLayoutManager(secondLayoutManager);

    secondRecyclerView.post(new Runnable() {
            @Override
            public void run() {
                JSON_HTTP_CALL2();// a method which requests remote data 
            }
        });


    // Implementing Click Listener on RecyclerView.

}

public void JSON_HTTP_CALL(){

    RequestOfJSonArray = new JsonArrayRequest(HTTP_JSON_URL + "/api/example.php" +"&category_id=2",

        new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                ParseJSonResponse(response);
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

    requestQueue = Volley.newRequestQueue(MainActivity.this);

    requestQueue.add(RequestOfJSonArray);
}

public void ParseJSonResponse(JSONArray array){

    for(int i = 0; i<array.length(); i++) {

        DataAdapter GetDataAdapter2 = new DataAdapter();

        JSONObject json = null;
        try {

            json = array.getJSONObject(i);

            GetDataAdapter2.setImageTitle2(json.getString(Image_Name_JSON));

            // Adding image title name in array to display on RecyclerView click event.
            ImageTitleNameArrayListForClick.add(json.getString(Image_Name_JSON));

            GetDataAdapter2.setImageUrl2(HTTP_JSON_URL + "/" + json.getString(Image_URL_JSON));

        } catch (JSONException e) {

            e.printStackTrace();
        }
        ListOfdataAdapter.add(GetDataAdapter2);
    }


    recyclerViewadapter = new RecyclerViewAdapter(ListOfdataAdapter, getApplicationContext());
    firstrecyclerView.setAdapter(recyclerViewadapter);
}

public void JSON_HTTP_CALL2(){

    RequestOfJSonArray = new JsonArrayRequest(HTTP_JSON_URL + "/api/example.php" +"&category_id=2",

        new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                ParseJSonResponse2(response);
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

    requestQueue = Volley.newRequestQueue(MainActivity.this);

    requestQueue.add(RequestOfJSonArray);
}


public void ParseJSonResponse2(JSONArray array){

    for(int i = 0; i<array.length(); i++) {

        DataAdapter GetDataAdapter2 = new DataAdapter();

        JSONObject json = null;
        try {

            json = array.getJSONObject(i);

            GetDataAdapter2.setImageTitle2(json.getString(Image_Name_JSON));

            // Adding image title name in array to display on RecyclerView click event.
            ImageTitleNameArrayListForClick.add(json.getString(Image_Name_JSON));

            GetDataAdapter2.setImageUrl2(HTTP_JSON_URL + "/" + json.getString(Image_URL_JSON));

        } catch (JSONException e) {

            e.printStackTrace();
        }
        ListOfdataAdapter.add(GetDataAdapter2);
    }


    recyclerViewadapter = new RecyclerViewAdapter(ListOfdataAdapter, getApplicationContext());
    secondRecyclerView.setAdapter(recyclerViewadapter);
}

}

Класс адаптера

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

Context context;
List<DataAdapter> dataAdapters;
ImageLoader imageLoader;
private Activity activity;
private static final int CITY_TYPE = 0;
JsonArrayRequest RequestOfJSonArray;
private static final int EVENT_TYPE = 1;

public RecyclerViewAdapter(Activity act) {
    this.activity = act;
}

public RecyclerViewAdapter(List<DataAdapter> getDataAdapter, Context context){

    super();
    this.dataAdapters = getDataAdapter;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view;
    switch (viewType) {
        case CITY_TYPE:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false);
            return new ViewHolder(view);
        case EVENT_TYPE:

            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card2, parent, false);
            return new ViewHolder(view);
    }
    return null;
}

@Override
public void onBindViewHolder(ViewHolder Viewholder, int position) {

    DataAdapter dataAdapterOBJ =  dataAdapters.get(position);
    imageLoader = ImageAdapter.getInstance(context).getImageLoader();

    if (dataAdapterOBJ != null) {
        switch (dataAdapterOBJ.getType()) {
            case CITY_TYPE:

                imageLoader.get(dataAdapterOBJ.getImageUrl2(),
                                ImageLoader.getImageListener(
                                    Viewholder.VollyImageView,//Server Image
                                    R.mipmap.ic_launcher,//Before loading server image the default showing image.
                                    android.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server.
                                )
                                );

                Viewholder.VollyImageView.setImageUrl(dataAdapterOBJ.getImageUrl2(), imageLoader);

                Viewholder.ImageTitleTextView.setText(dataAdapterOBJ.getImageTitle2());
                break;
            case EVENT_TYPE:

                imageLoader.get(dataAdapterOBJ.getImageUrl2(),
                                ImageLoader.getImageListener(
                                    Viewholder.VollyImageView,//Server Image
                                    R.mipmap.ic_launcher,//Before loading server image the default showing image.
                                    android.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server.
                                )
                                );

                Viewholder.VollyImageView.setImageUrl(dataAdapterOBJ.getImageUrl2(), imageLoader);

                Viewholder.ImageTitleTextView.setText(dataAdapterOBJ.getImageTitle2());
                break;
        }
    }
}

@Override
public int getItemCount() {

    return dataAdapters.size();
}

class ViewHolder extends RecyclerView.ViewHolder{

    public TextView ImageTitleTextView;
    public NetworkImageView VollyImageView ;

    public ViewHolder(View itemView) {

        super(itemView);
        ImageTitleTextView = (TextView) itemView.findViewById(R.id.MenuNameTV) ;
        VollyImageView = (NetworkImageView) itemView.findViewById(R.id.VolleyImageView) ;

    }
}

}

основная деятельность xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">


<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:text="Most Watched"/>

<!-- A RecyclerView to display horizontal list -->
<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview1"
    android:scrollbars="none"
    android:layout_width="fill_parent"
    android:layout_height="240dp"
    android:paddingLeft="0dp"
    android:paddingRight="15dp"
    android:paddingTop="15dp"
    android:paddingBottom="25dp"
    android:background="#ffc000"/>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:text="All Dramas"/>

<!-- A RecyclerView to display vertical list -->
<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview2"
    android:layout_width="fill_parent"
    android:layout_height="240dp"
    android:paddingLeft="0dp"
    android:paddingRight="15dp"
    android:paddingTop="15dp"
    android:paddingBottom="25dp"/>

Я стараюсь всеми возможными способами, доступными в Интернете, но не могу найти решение.

Что-то не так, я делаю?

anyИдея, как запустить два реселлера с приведенным выше кодом.

thankx

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете сделать это -

<android.support.v4.widget.NestedScrollView>
  <LinearLayout>
   .
   .
   .
  </LinearLayout>
</android.support.v4.widget.NestedScrollView>

Это используется для объединения двух или более видов прокрутки вместе, и еще одна вещь, которую вы можете сделать, это сделать высоту представления рециркулятора "wrap_content".

Надеюсь, это поможет.

...