Ваша текущая логика элементов списка выглядит примерно так:
Item 1--> LinearLayout
-->GridView
-->ImageView
-->TextView
-->TextView
Item 2--> LinearLayout
-->GridView
-->ImageView
-->TextView
-->TextView
Таким образом, в действительности ваши элементы LinearLayouts занимают всю ширину экрана устройства.
Вместо ListView, вы должны использовать GridView в качестве контейнера ваших элементов, и вы должны реализовать свой customAdapter для использования элементов LinearLayout:
Ваш GridView в макете вашей деятельности:
<GridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"
android:stretchMode="columnWidth"
android:gravity="center" />
Расположение ваших товаров:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/rimage"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="10dp"
android:contentDescription="@string/todo"
app:srcCompat="@drawable/thumb_default_icon_female" />
<TextView
android:id="@+id/rnick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/nick" />
<TextView
android:id="@+id/rcity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/city" />
и настройте ваш адаптер на GridView напрямую.Убедитесь, что ваш адаптер расширяет BaseAdapter (не ListAdapter);
yourGridView.setAdapter(yourCustomAdapter);
В целом, лучшим подходом было бы использование RecyclerView с GridLayoutManager.
recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 2));
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(adapter);
Вотпростой учебник