2016-04-02 30 views
-2

Çeşitli tuts ve SO sorularına baktıktan sonra, uzak bir veritabanından bir görüntüleyici içinde sınırlı sonuçların nasıl görüntüleneceğini biliyorum. Ancak uygulamayı çalıştırdığımda, aşağıdaki hatayı alıyorum. Ben hata olmadan bir tarayıcı üzerinden url kontrol ettik, bu yüzden null olamaz biliyorum ve bu yanlış gittiğinden emin değilim. PHP kodu, sonuçları veritabanındaki son 5 satıra sınırlar.Android'de özel bir görüntüleyici ile bu hataya neden yanlış yapıyorum?

LogCat

Süreci: com.curtrostudios.custompagertest PID: com.curtrostudios.custompagertest.MainActivity $ 2.onResponse (MainActivity.java:59) de 22.057 java.lang.NullPointerException com.curtrostudios.custompagertest.MainActivity $ 2.onResponse (MainActivity.java:50) com.android.volley.toolbox.JsonRequest.deliverResponse (JsonRequest.java:65) adresindeki com.android.volley.ExecutorDelivery $ ResponseDeliveryRunnable adresindeki . koşmak (ExecutorDelivery.java:99) bir android.os.Handler.dispatchMessage (Handler.java:95) adresinde, android.os.Looper.loop (Looper.java:136) adresinden numaralı telefondan droid.os.Handler.handleCallback (Handler.java:733) . java.lang.reflect.Method.invokeNative (Yerel Yöntem) at java.lang.reflect.Method.invoke (Method.java:515) at.android şirketinde app.ActivityThread.main (ActivityThread.java:5072) .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:786) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:602) adresinde dalvik.system.NativeStart.main (Yerel Yöntem) 'de

Ana Yasa ivity

public class MainActivity extends AppCompatActivity { 
    private ViewPager pageView; 
    private String TAG = "Featured View"; 
    private String FEAT_URL = "http://localhost/testing/featured.php"; 
    private ArrayList<FeaturedModel> fdata; 
    private FeaturedAdapter featAdapt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

     pageView = (ViewPager)findViewById(R.id.featuredView); 

     JsonArrayRequest request = new JsonArrayRequest(FEAT_URL, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); try { 
          for(int i=0;i<response.length();i++){ 
           String pid=response.getJSONObject(i).getString("pid"); 
           String name=response.getJSONObject(i).getString("prod_name"); 
           String img = response.getJSONObject(i).getString("prod_pic"); 

           fdata.add(new FeaturedModel(pid, name, img)); 
          } 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         featAdapt=new FeaturedAdapter(MainActivity.this, fdata); 
         pageView.setAdapter(featAdapt); 
         //dialog.dismiss(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d(TAG, "Error: " + error.getMessage()); 
       //dialog.dismiss(); 
      } 
     }); 

     VolleyController.getInstance().addToRequestQueue(request, TAG); 





    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Veri Modeli tarayıcıdan

public class FeaturedModel { 
    private String pid; 
    private String prod_name; 
    private String prod_pic; 

    public FeaturedModel(String pid,String prod_name,String prod_pic){ 
     this.pid=pid; 
     this.prod_name=prod_name; 
     this.prod_pic=prod_pic; 

    } 

    public String getPID(){ 
     return pid; 

    } 
    public String getName(){ 
     return prod_name; 

    } 
    public String getImageURL(){ 
     return prod_pic; 
    } 


} 

Çağrı Adaptörü

public class FeaturedAdapter extends PagerAdapter { 
    private ArrayList<FeaturedModel> feature; 
    private Context context; 
    private static LayoutInflater inflater = null; 

    public FeaturedAdapter(MainActivity mainActivity, ArrayList<FeaturedModel> data) { 

     feature=data; 
     context=mainActivity; 

     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return feature.size(); 
    } 

    public class Holder 
    { 
     TextView ftitle; 
     NetworkImageView fimg; 

    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     Holder holder = new Holder(); 
     View rowView; 
     rowView = inflater.inflate(R.layout.feature_row, null); 
     holder.ftitle=(TextView) rowView.findViewById(R.id.featTitle); 
     holder.fimg=(NetworkImageView)rowView.findViewById(R.id.featImg); 
     holder.ftitle.setText(feature.get(position).getName()); 

     // If you are using NetworkImageView 
     holder.fimg.setImageUrl(feature.get(position).getImageURL(), VolleyController.getInstance().getImageLoader()); 


     container.addView(rowView); 
     return rowView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((RelativeLayout)object); 
    } 

} 

Sonucu

[ 
    { 
     "pid": "45", 
     "prod_name": "Product 45", 
     "prod_pic": "http://localhost/images/testone.png", 
     "prod_desc": "some description", 

    }, 
    { 
     "pid": "44", 
     "prod_name": "Product 44", 
     "prod_pic": "http://localhost/images/testtwo.png", 
     "prod_desc": "some description", 

    }, 
    { 
     "pid": "43", 
     "prod_name": "Product 43", 
     "prod_pic": "http://localhost/images/testone.png", 
     "prod_desc": "some description", 

    }, 
    { 
     "pid": "42", 
     "prod_name": "Product 42", 
     "prod_pic": "http://localhost/images/testtwo.png", 
     "prod_desc": "some description", 

    }, 
    { 
     "pid": "41", 
     "prod_name": "Product 41", 
     "prod_pic": "http://localhost/images/testone.png", 
     "prod_desc": "some description", 

    } 
] 
+0

'onResponse'de null bir şey' belki 'yanıtı' null' manifestinizde 'INTERNET' izniniz var mı? – Blundell

+3

ArrayList fdata öğenizi başlat. –

+0

@Blundell evet, Bildirgemde internet iznim var. –

cevap

1

ArrayList ürününüz başlatılmamış. Öğe eklemeden/seçmeden önce fdata = new ArrayList<>(); numaralı telefonu arayın.

1
  1. Eğer

    RequestQueue kuyruğu = olleyController.getInstance() getQueue() bir RequestQueue Nesne 2.Make internet izni olduğundan emin olun.;

  2. queue.add (jsonObjectRequest) kuyruğa jsonObjectRequest ekleyin;

  3. 'u volley Anonymous class'un dışına ayarlayabilirsiniz.

+0

Cevabınız için teşekkürler ama Adeel Shahzad benim hatama işaret etti. Arraylist'i başlatmayı unuttum. –

İlgili konular