Recyclerview не показывает список в главном действии
I am developing a POS system in android and trying to list images from an api into a fragment with a recyclerview.when i debug i see the list returned but not in the android code.what more can i do to show the information in my layout.maybe i'm doing something wrong. the main activity is supposed to load the categorylist activity. categorylist is using both categoylistrecyclerview and categorylistrecycler adapter. when i debug i see the list in the category list but i get an error in main activity no recycler adapter attached.meanwhile i have attached it.maybe i'm not setting the image well in the recycleradapter.please check ItemObject if i set the image well
Что я уже пробовал:
это основная деятельность
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:include="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" tools:context=".MainActivity"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#f4efef" android:orientation="vertical"> <TextView android:id="@+id/order" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:text="Order" android:textAllCaps="true" android:textColor="@color/colorPrimaryDark" android:textSize="16sp" /> <!--<View--> <!--android:id="@+id/view1"--> <!--android:layout_width="match_parent"--> <!--android:layout_height="2dp"--> <!--android:background="@color/divider" />--> <TextView android:id="@+id/seatno" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/order" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:text="SEAT NO." android:textAllCaps="true" android:textColor="@color/colorPrimaryDark" android:textSize="16sp" /> <TableLayout android:id="@+id/itemlist" android:layout_width="match_parent" android:layout_height="400dp"> <TableRow> <TextView android:layout_height="30dp" android:layout_column="1" android:width="250dp" android:padding="3dip" android:text="Item" android:textAlignment="center" android:layout_weight="2" android:textSize="16sp"/> <TextView android:layout_height="30dp" android:layout_column="2" android:width="80dp" android:gravity="end" android:padding="3dip" android:text="Price" android:textAlignment="center" android:layout_weight="2" android:textSize="16sp"/> <TextView android:layout_height="30dp" android:layout_column="3" android:width="60dp" android:gravity="end" android:padding="3dip" android:text="Qty" android:textAlignment="center" android:layout_weight="2" android:textSize="16sp"/> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="match_parent" /> <TableRow android:layout_width="match_parent" android:layout_height="match_parent" /> <TableRow android:layout_width="match_parent" android:layout_height="match_parent" /> </TableLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="80dp" android:orientation="horizontal"> <TextView android:id="@+id/totalamt" android:layout_width="390dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_below="@id/itemlist" android:text="Amount Due" android:textColor="@color/colorPrimaryDark" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:id="@+id/LinearLayout02" android:layout_height="80dp" android:layout_width="match_parent" android:gravity="center"> <Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Clear"> </Button> <Button android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Payment"> </Button> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="500dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" android:background="#f4efef" android:gravity="center_horizontal"> <EditText android:id="@+id/edtSearch" android:layout_width="732dp" android:layout_height="wrap_content" android:inputType="text" android:imeOptions="actionSearch" android:hint="Search for Item" android:gravity="center_horizontal"/> <fragment android:id="@+id/catframe" android:name ="com.sipconsult.golfpos.CategoryList" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout="@layout/categoryframe"> </fragment> </LinearLayout> </LinearLayout>
это кадр категории
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.sipconsult.golfpos.CategoryList" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/txt1" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="Price" android:textAlignment="center" android:layout_weight="2" android:textSize="16sp"/> <android.support.v7.widget.RecyclerView android:layout_below="@id/txt1" android:id="@+id/categoryrecycler" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="90dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:stretchMode="columnWidth" android:verticalSpacing="10dp"> </android.support.v7.widget.RecyclerView> </LinearLayout>
это категорист
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/cardview" android:layout_width="250dp" android:layout_height="250dp" card_view:cardUseCompatPadding="true" card_view:cardCornerRadius="10dp" android:layout_margin="10dp"> <RelativeLayout android:layout_width="278dp" android:layout_height="233dp"> <ImageView android:id="@+id/categoryimage" android:layout_width="250dp" android:layout_height="200dp" android:src="@drawable/three" android:scaleType="centerCrop" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:contentDescription="" tools:ignore="ContentDescription"/> <TextView android:id="@+id/categoryname" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_below="@+id/categoryimage" android:background="@color/cardview_light_background" android:textAlignment="center" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="Categoryname" android:textColor="@color/cardview_dark_background" android:textSize="14sp" /> </RelativeLayout> </android.support.v7.widget.CardView>
это listviewwithimage
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:elevation="1dp"> <ImageView android:id="@+id/imageView" android:layout_width="200dp" android:layout_height="200dp" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_margin="15dp" android:contentDescription="null" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="15dp" android:gravity="center" android:text="New Text" tools:ignore="RtlHardcoded" android:layout_alignEnd="@+id/imageView" android:layout_alignStart="@+id/imageView" android:layout_below="@+id/imageView" /> </RelativeLayout>
это ItemObject
public class ItemObject { private String Category_Name; private String Image; private int Id; public ItemObject(int id, String name, String image) { this.Id = id; this.Category_Name = name; this.Image = image; } public int getId() { return Id; } public void setId(int id) { Id = id; } public String getCategory_Name() { return Category_Name; } public void setCategory_Name(String name) { Category_Name = name; } public String getImage() { return Image; } public void setImage(String image) { Image = image; }
это categorylistrecycleradapter
public class CategorylistRecyclerAdapter extends RecyclerView.Adapter<CategorylistViewHolders>{ private ArrayList<ItemObject> itemList; private Context context; public CategorylistRecyclerAdapter(Context context, ArrayList<ItemObject> itemList) { this.itemList = itemList; this.context = context; } @Override public CategorylistViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.categorylist, parent, false); CategorylistViewHolders rcv = new CategorylistViewHolders(layoutView); return rcv; } @Override public void onBindViewHolder(CategorylistViewHolders holder, int position) { holder.categoryname.setText(itemList.get(position).getCategory_Name()); holder.categoryimage.setImageResource(Integer.parseInt(itemList.get(position).getImage())); } @Override public int getItemCount() { return this.itemList.size(); } }
это categorylistviewholder
public class CategorylistViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener{ public TextView categoryname; public ImageView categoryimage; public CategorylistViewHolders(View itemView) { super(itemView); itemView.setOnClickListener(this); categoryname = (TextView)itemView.findViewById(R.id.categoryname); categoryimage = (ImageView)itemView.findViewById(R.id.categoryimage); } @Override public void onClick(View view) { Toast.makeText(view.getContext(), "Clicked Category = " + getPosition(), Toast.LENGTH_SHORT).show(); } }
это categorylist java,загружает список из api
public class CategoryList extends Fragment { private GridLayoutManager gridLayout; private static String URL = "http:xxx"; private static String Image_URL= "http:xxx"; private ArrayList<ItemObject> List; private RecyclerView recyclerView; private CategorylistRecyclerAdapter rcAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.categoryframe, container, false); gridLayout = new GridLayoutManager(getActivity(),3); recyclerView = (RecyclerView) view.findViewById(R.id.categoryrecycler); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(gridLayout); List = new ArrayList<>(); loadRecyclerViewData(); return view; } /*@Override public void onViewCreated(View view, Bundle savedInstanceState) { text = (TextView)view.findViewById(R.id.txt1); gridLayout = new GridLayoutManager(getActivity(),3); recyclerView = (RecyclerView) view.findViewById(R.id.categoryrecycler); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(gridLayout); List = new ArrayList<>(); text.setText("Hello world"); loadRecyclerViewData(); }*/ public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } private void loadRecyclerViewData() { final ProgressDialog progressDialog = new ProgressDialog(getActivity()); progressDialog.setMessage("Loading...."); progressDialog.show(); StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() { @Override public void onResponse(String s) { progressDialog.dismiss(); try { JSONObject jsonObject = new JSONObject(s); JSONArray jsonArray = jsonObject.getJSONArray("Model"); //int[] images = getImg(); for (int i = 0; i < jsonArray.length(); i++) { JSONObject p = jsonArray.getJSONObject(i); ItemObject list = new ItemObject ( p.getInt("CategoryId"), p.getString("Category_Name"), p.getString(Image_URL + "Image") ); List.add(list); } rcAdapter = new CategorylistRecyclerAdapter(getActivity(),List); recyclerView.setAdapter(rcAdapter); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } } ); RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); requestQueue.add(stringRequest); } }
это основная деятельность,она должна загружать categorylist как фрагмент, где я могу манипулировать данными
public class MainActivity extends AppCompatActivity{ CategoryList ct; FragmentTransaction transaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ct = new CategoryList(); FragmentManager manager=getSupportFragmentManager(); transaction=manager.beginTransaction(); transaction.add(R.id.catframe, ct, "Frag_Top"); transaction.commit(); /*if (getFragmentManager().findFragmentById(R.id.catframe) == null) { getFragmentManager().beginTransaction().add(R.id.catframe,ct,"Fragment One" ).commit(); }*/ } /* ct = new CategoryList(); final FragmentManager fragmentManager = getFragmentManager(); transaction = fragmentManager.beginTransaction(); transaction.add(R.id.catframe,ct,"Fragment one"); transaction.commit();*/ }
Richard MacCutchan
TL;DR
Member 13053943
что это значит
Richard MacCutchan
Это означает, что никто не будет пытаться отлаживать весь этот код для вас. Пожалуйста, удалите весь код, который не связан с вашим вопросом, и добавьте некоторые правильные детали того, что происходит не так.
David Crow
Переместите это на настоящий форум Android. Слишком много здесь для простого сообщения вопросов и ответов.