Я разрабатываю приложение для Android с помощью Android Studio. В моем приложении мне нужно работать с сеткой, потому что в моем приложении есть некоторые функции, подобные фреймворкам newfeeds. Я использую volley для запроса данных с сервера. Я создал пользовательский адаптер массива для просмотра сетки. Но проблема в том, что ничто не привязывает к виду сетки, даже если запрос волейбола является успешным и содержит так много элементов. Я% 100 уверен, что залп и серверная часть работают правильно. Но привязка к сетке не привязана. Ниже мой код.Gridview с пользовательским адаптером не работает и адаптер getView не запускается в Android
Мой заказ адаптер класса
public class ItemListAdapter extends ArrayAdapter<Item>{
private ArrayList<Item> values;
private Context context;
static class ViewHolder{
public ImageView imageViewItemImg;
public TextView tvItemName;
public TextView tvItemPrice;
public TextView tvItemLikeCount;
}
public ItemListAdapter(Context contextParam,ArrayList<Item> valuesParam)
{
super(contextParam,-1,valuesParam);
this.context = contextParam;
this.values = valuesParam;
}
@Override
public View getView(final int position,View convertView,ViewGroup parent)
{
View rowView = convertView;
ViewHolder viewHolder;
if(rowView==null)
{
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = layoutInflater.inflate(R.layout.item_list_item_view,null);
viewHolder = new ViewHolder();
viewHolder.imageViewItemImg = (ImageView) rowView.findViewById(R.id.item_list_view_item_image);
rowView.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) rowView.getTag();
}
rowView.setId(values.get(position).getId());
if(values.get(position).getMediumImageUrl()!=null && values.get(position).getMediumImageUrl().isEmpty()==false)
{
Picasso.with(context).load(values.get(0).getMediumImageUrl()).into(viewHolder.imageViewItemImg);
}
return rowView;
}
}
Мой фрагмент с видом сетки
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
.
.
.
listItems = new ArrayList<Item>();
adapter = new ItemListAdapter(getActivity(),listItems);
.
.
.
.
updateItemList();
return view;
}
public void updateItemList()
{
.
.
.
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, new JSONObject(paramString), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
String status = response.getString(getResources().getString(R.string.api_status));
if(status.equals(getResources().getString(R.string.api_status_success)))
{
//can be asked to login again
JSONArray items = response.getJSONArray("items");
ArrayList<Item> newItems = new ArrayList<Item>();
if(items.length()>0)
{
for(int i=0;i<items.length();i++)
{
Item item = new Item();
item.setMediumImageUrl(items.getString(i));
newItems.add(item);
}
}
if(newItems.size()>0)
{
listItems.addAll(newItems);
adapter.notifyDataSetChanged();
}
}
else{
showMessageDialog("Server error encountered");
}
}
catch (JSONException e)
{
showMessageDialog("An error encountered");
}
page++;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
showMessageDialog(error.getMessage());
}
});
VolleySingleton.getInstance(getActivity()).addToRequestQueue(request);
. . . Файл }
макет для фрагмента
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Item List"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<GridView
android:id="@+id/gv_item_list"
android:layout_width="match_parent"
android:layout_height="match_parent"></GridView> </LinearLayout>
Это строка или элемент макета для просмотра сетки.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/item_list_view_item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Пожалуйста, почему GetView функция никогда не бегать и ничего не возвращает. Пожалуйста, помогите мне. Благодарю.
Это ваш полный код адаптера. – Dhina
Да на данный момент. Потому что я сначала тестирую его. –
'@Override public int getCount() { return values.size(); } ' попробуйте добавить это к вашему адаптеру. – Dhina