2016-06-16 1 views
0

У меня есть gridview для вкладки tabLayout. Я загружаю значения из базы данных mysql для заполнения текстовых просмотров gridview. Я вижу, что синтаксический анализ JSON работает правильно и возвращает правильный результат JSON. Но ничего не видно в виде сетки. GridView ничего не показывает после того, как JSON анализирует значения в своих позициях

import android.content.Context; 
 
import android.graphics.drawable.Drawable; 
 
import android.view.LayoutInflater; 
 
import android.view.View; 
 
import android.view.ViewGroup; 
 
import android.widget.BaseAdapter; 
 
import android.widget.ImageView; 
 
import android.widget.TextView; 
 

 
import com.mysampleapp.R; 
 

 
import java.util.ArrayList; 
 

 

 
public class GridAdapterStores extends BaseAdapter { 
 
    private Context context; 
 
    private ArrayList<String> storename=new ArrayList<String>(); 
 
    private ArrayList<Integer> imagelinks=new ArrayList<Integer>(); 
 
    public GridAdapterStores(Context c,ArrayList<String> storename, ArrayList<Integer> imagelinks) { 
 
     context = c; 
 
     this.imagelinks = imagelinks; 
 
     this.storename = storename; 
 
    } 
 
    @Override 
 
    public int getCount() { 
 
     return storename.size(); 
 
    } 
 

 
    public Object getItem(int position) { 
 
     return null; 
 
    } 
 
    public long getItemId(int position) { 
 
     return 0; 
 
    } 
 
    
 
    public View getView(int position, View convertView, ViewGroup parent){ 
 

 
     View grid; 
 
     if (convertView == null) { 
 
      grid = new View(context); 
 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
 
      grid = inflater.inflate(R.layout.grid_stores,parent,false); 
 
     } 
 
     else { 
 
      grid = (View) convertView; 
 
     } 
 
     TextView textViewStoreName = (TextView) grid.findViewById(R.id.store_name); 
 
     ImageView imageViewStoreImage = (ImageView) grid.findViewById(R.id.store_image); 
 
     textViewStoreName.setText(storename.get(position)); 
 
     Integer x=imagelinks.get(position); 
 
     imageViewStoreImage.setImageResource(x); 
 
     return grid; 
 
    } 
 

 

 

 
}

import android.app.ProgressDialog; 
 
import android.content.Intent; 
 
import android.os.AsyncTask; 
 
import android.os.Bundle; 
 
import android.support.annotation.Nullable; 
 
import android.util.Log; 
 
import android.view.LayoutInflater; 
 
import android.view.View; 
 
import android.view.ViewGroup; 
 
import android.support.v4.app.Fragment; 
 
import android.widget.AdapterView; 
 
import android.widget.GridView; 
 
import android.widget.Toast; 
 

 
import com.android.volley.RequestQueue; 
 
import com.android.volley.Response; 
 
import com.android.volley.VolleyError; 
 
import com.android.volley.toolbox.StringRequest; 
 
import com.android.volley.toolbox.Volley; 
 

 
import org.json.JSONArray; 
 
import org.json.JSONException; 
 
import org.json.JSONObject; 
 
import android.widget.AdapterView.OnItemClickListener; 
 
import android.view.View.OnClickListener; 
 
import com.mysampleapp.R; 
 

 
import java.util.ArrayList; 
 

 

 
public class StoresFragment extends Fragment { 
 
    private ProgressDialog loading; 
 
    private ArrayList<String> storenamefinal=new ArrayList<String>(); 
 
    private ArrayList<Integer> imagelinksfinal=new ArrayList<Integer>(); 
 

 
    @Nullable 
 
    @Override 
 
    public View onCreateView(LayoutInflater inflater , ViewGroup container,Bundle savedInstanceState){ 
 
     return inflater.inflate(R.layout.stores_layout,null); 
 
    } 
 
    @Override 
 
    public void onViewCreated(final View view, final Bundle savedInstanceState){ 
 

 
     super.onViewCreated(view, savedInstanceState); 
 
     
 

 
     GridView gridview=(GridView) getActivity().findViewById(R.id.grid_stores); 
 
     getData(); 
 

 
     final GridAdapterStores gridadapter= new GridAdapterStores(getActivity(),storenamefinal,imagelinksfinal); 
 
     gridview.setAdapter(gridadapter); 
 
     
 
     gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
 
      /* Intent i=new Intent(Intent.ACTION_VIEW); 
 
      i.setData(Uri.parse(gridadapter.getItem(position).getImageUrlString())); 
 
     startActivity(i);}});*/ 
 
       // Toast.makeText(getActivity(), "You Clicked at " + cat[+position], Toast.LENGTH_SHORT).show(); 
 
       Intent i = new Intent(getActivity(), stores_show.class); 
 
       i.putExtra("storename", storenamefinal.get(position)); 
 
       getActivity().startActivity(i); 
 
      } 
 
     }); 
 
    } 
 

 
    //public class getData extends AsyncTask<String,>>{ 
 

 
    //} 
 
    private void getData() { 
 
     loading = ProgressDialog.show(getActivity(), "Please wait...", "Fetching...", false, false); 
 
     String url = Config1.DATA_URL; 
 
     Toast.makeText(getActivity(), url, Toast.LENGTH_LONG).show(); 
 
     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
 
      @Override 
 
      public void onResponse(String response) { 
 
       loading.dismiss(); 
 
       showJSON(response); 
 
      } 
 
     }, 
 
       new Response.ErrorListener() { 
 
        @Override 
 
        public void onErrorResponse(VolleyError error) { 
 
         Toast.makeText(getActivity(),error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
 
        } 
 
       }); 
 

 
     RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
 
     requestQueue.add(stringRequest); 
 
    } 
 
    private void showJSON(String response) { 
 
     try { 
 
      JSONObject jsonObject = new JSONObject(response); 
 
      JSONArray result = jsonObject.getJSONArray(Config1.JSON_ARRAY); 
 
      Toast.makeText(getActivity(),result.toString(),Toast.LENGTH_LONG).show(); 
 
      int i=result.length(); 
 
      Log.i("Result Length",result.toString()); 
 
      for(int j=0;j<i;j++){ 
 
       storenamefinal.add(null); 
 
       imagelinksfinal.add(null); 
 
      } 
 
      String temp; 
 
      for(int j=0;j<i;j++) 
 
      { 
 
       JSONObject Data = result.getJSONObject(j); 
 
       Log.i("Data",Data.toString()); 
 
       temp= (Data.getString(Config1.KEY_PRIO)); 
 
       Log.i("temp", temp.toString()); 
 
       storenamefinal.set(Integer.parseInt(temp) - 1, Data.getString(Config1.KEY_NAME)); 
 

 
       Log.i("Result Length", storenamefinal.toString()); 
 
       imagelinksfinal.add(R.drawable.sg1); 
 

 
      } 
 
      Log.i("Result Length", storenamefinal.toString()); 
 
      Toast.makeText(getActivity(),storenamefinal.get(0),Toast.LENGTH_LONG).show(); 
 
     } catch (JSONException e) { 
 
      e.printStackTrace(); 
 
     } 
 
    } 
 
    
 

 
}

Я попытался найти на Google и StackOverflow, ничего не нашел успешной,

{ "результат": [{ "StoreName": "Flipkart. ком», "imagelinks": "", "mainpriority": "2"}, { "StoreName": "Jabong.com", "imagelinks": "", "mainpriority": "4"}, { "StoreName" : "Myntra.com", "imagelinks": "", "mainpriority": "5"}, { "StoreName": "Ам azon.in " "imagelinks": "", "mainpriority": "1"}, { "StoreName": "Snapdeal.com", "imagelinks": "", "mainpriority": "3"}, {" StoreName ":" Koovs.in», "imagelinks": "", "mainpriority": "6"}, { "StoreName": "Limeroad.com", "imagelinks": "", "mainpriority": "7" }, { "StoreName": "Shopperstop.com", "imagelinks": "", "mainpriority": "8"}, { "StoreName": "Stalkbuylove.com", "imagelinks": "", "mainpriority" : "9"}, { "StoreName": "Yepme.com", "imagelinks": "", "mainpriority": "10"}, { "StoreName": "Faballey.com", "imagelinks": "" , "mainpriority": "11"}, {"storename": "Fabindia.com", "imagelinks": "", "mainpriority": "12"}, {"storename": "PrettySecrets.com", "imagelinks" ":" " "mainpriority": "13"}, { "StoreName": "AmericanSwan.com", "imagelinks": "", "mainpriority": "14"}, { "StoreName":" Clovia.com », "imagelinks": "", "mainpriority": "15"}, { "StoreName": "Bata.in", "imagelinks": "", "mainpriority": "16"}, { "StoreName": "TrendyBharat.com", "imagelinks": "", "mainpriority": "17"}, { "StoreName": "Royzez.com", "imagelinks": "", "mainpriority": "18"}]} `

Storenamefinal будет иметь вхождения storenames из результате JSON (выше)

+0

вы можете поделиться storenamefinal значение? –

+0

Спасибо за ответ. Я редактировал мой вопрос, чтобы включить JSON и storenamefinal. –

+0

какой текст отображается для 1-й позиции textViewStoreName в виде сетки –

ответ

0

Я попробовал ваш код, и он выходит из строя приложения после отладки я получил, что проблема с изображением ресурсами , когда я комментировал ниже два линий в приложение работает нормально.

//check these resources 
    Integer x=imagelinks.get(position); 
    imageViewStoreImage.setImageResource(x); 

ваша showJSON функция(), что я попытался

private void showJSON() { 
    try { 
     String response ="{\"result\":[{\"storename\":\"Flipkart.com\",\"imagelinks\":\"\",\"mainpriority\":\"2\"},{\"storename\":\"Jabong.com\",\"imagelinks\":\"\",\"mainpriority\":\"4\"},{\"storename\":\"Myntra.com\",\"imagelinks\":\"\",\"mainpriority\":\"5\"},{\"storename\":\"Amazon.in\",\"imagelinks\":\"\",\"mainpriority\":\"1\"},{\"storename\":\"Snapdeal.com\",\"imagelinks\":\"\",\"mainpriority\":\"3\"},{\"storename\":\"Koovs.in\",\"imagelinks\":\"\",\"mainpriority\":\"6\"},{\"storename\":\"Limeroad.com\",\"imagelinks\":\"\",\"mainpriority\":\"7\"},{\"storename\":\"Shopperstop.com\",\"imagelinks\":\"\",\"mainpriority\":\"8\"},{\"storename\":\"Stalkbuylove.com\",\"imagelinks\":\"\",\"mainpriority\":\"9\"},{\"storename\":\"Yepme.com\",\"imagelinks\":\"\",\"mainpriority\":\"10\"},{\"storename\":\"Faballey.com\",\"imagelinks\":\"\",\"mainpriority\":\"11\"},{\"storename\":\"Fabindia.com \",\"imagelinks\":\"\",\"mainpriority\":\"12\"},{\"storename\":\"PrettySecrets.com\",\"imagelinks\":\"\",\"mainpriority\":\"13\"},{\"storename\":\"AmericanSwan.com\",\"imagelinks\":\"\",\"mainpriority\":\"14\"},{\"storename\":\"Clovia.com\",\"imagelinks\":\"\",\"mainpriority\":\"15\"},{\"storename\":\"Bata.in\",\"imagelinks\":\"\",\"mainpriority\":\"16\"},{\"storename\":\"TrendyBharat.com\",\"imagelinks\":\"\",\"mainpriority\":\"17\"},{\"storename\":\"Royzez.com\",\"imagelinks\":\"\",\"mainpriority\":\"18\"}]} "; 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray("result"); 
     Toast.makeText(MainActivity.this, result.toString(), Toast.LENGTH_LONG).show(); 
     int i=result.length(); 
     Log.i("Result Length", result.toString()); 
     for(int j=0;j<i;j++){ 
      storenamefinal.add(null); 
      imagelinksfinal.add(null); 
     } 
     String temp; 
     for(int j=0;j<i;j++) 
     { 
      JSONObject Data = result.getJSONObject(j); 
      Log.i("Data",Data.toString()); 
      temp= (Data.getString("mainpriority")); 
      Log.i("temp", temp.toString()); 
      storenamefinal.set(Integer.parseInt(temp) - 1, Data.getString("storename")); 

      Log.i("Result Length", storenamefinal.toString()); 
      imagelinksfinal.add(R.drawable.ic_launcher); 

     } 
     Log.i("Result Length", storenamefinal.toString()); 
     Toast.makeText(MainActivity.this,storenamefinal.get(0),Toast.LENGTH_LONG).show(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

GridAdapterStores.java файл

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by mithilesh.izardar on 6/17/2016. 
*/ 
public class GridAdapterStores extends BaseAdapter { 
private Context context; 
private ArrayList<String> storename=new ArrayList<String>(); 
private ArrayList<Integer> imagelinks=new ArrayList<Integer>(); 
public GridAdapterStores(Context c,ArrayList<String> storename,  ArrayList<Integer> imagelinks) { 
    context = c; 
    this.imagelinks = imagelinks; 
    this.storename = storename; 
} 
@Override 
public int getCount() { 
    return storename.size(); 
} 

public Object getItem(int position) { 
    return null; 
} 
public long getItemId(int position) { 
    return 0; 
} 

public View getView(int position, View convertView, ViewGroup parent){ 

    View grid; 
    if (convertView == null) { 
     grid = new View(context); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     grid = inflater.inflate(R.layout.grid_stores,parent,false); 
    } 
    else { 
     grid = (View) convertView; 
    } 
    TextView textViewStoreName = (TextView) grid.findViewById(R.id.store_name); 
    ImageView imageViewStoreImage = (ImageView) grid.findViewById(R.id.store_image); 
    textViewStoreName.setText(storename.get(position)); 
// Integer x=imagelinks.get(position); 
// imageViewStoreImage.setImageResource(x); 
    return grid; 
} 

Днем Coding :)

+0

Еще ничего не отображает. Я думаю, что в классе mainactivity есть некоторая ошибка. Но я не могу это выяснить. Я реализовал этот StoresFragment как фрагмент для макета вкладки, который помещается в mainactivity. Думаете, я мог бы совершить какие-то ошибки. –

+0

в порядке, теперь он работает, но есть ошибка. Он отображается только тогда, когда я второй раз перебираю эту вкладку. –

+0

@ Zuqrix код в методе onViewCreated - это проблема, о которой я думаю. переместите весь код из onViewCreated в onCreateView. –

Смежные вопросы