2016-05-09 17 views
0

Ich möchte auf die Artikel von bookList im onItemClickListener zugreifen. Ich möchte auf bestimmte Bücher zugreifen und bestimmte Artikel von ihnen bekommen, wie man das macht?Zugreifen auf Arraylist Artikel

Der Code ist:

// Creating volley request obj 
final JsonArrayRequest bookrequest = new JsonArrayRequest(url, 
     new Response.Listener<JSONArray>() { 
      @Override 
      public void onResponse(JSONArray response) { 
       Log.d(TAG, response.toString()); 
       hidePDialog(); 

       // Parsing json 
       for (int i = 0; i < response.length(); i++) { 
        try { 
         JSONObject obj =(JSONObject) response.getJSONObject(i); 
         Book book = new Book(); 
         book.setTitle(obj.getString("BTitle")); 
         book.setThumbnailUrl(obj.getString("BCoverpath")); 
         book.setAuthor(obj.getString("BAuthor")); 
         book.setEdition(obj.getString("BEdition")); 
         book.setCategory(obj.getString("Bcategory")); 
         book.setLanguage(obj.getString("BLanguage")); 
         book.setDescription(obj.getString("BDescription")); 
         book.setCover(obj.getString("BCover")); 
         book.setOwner(obj.getString("UserFN")); 

         // adding book to books array 
         bookList.add(book); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 

       // notifying list adapter about data changes 
       // so that it renders the list view with updated data 
       adapter.notifyDataSetChanged(); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       hidePDialog(); 
      } 
     } 
); 

// Adding request to request queue 
AppController.getInstance().addToRequestQueue(bookrequest); 

// setting an onItem click listener in order to open the view book activity 
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) { 
     bookname=((TextView)view.findViewById(R.id.title)).getText().toString(); 
     Bauthor=((TextView)view.findViewById(R.id.author)).getText().toString(); 
     Bedition=((TextView)view.findViewById(R.id.edition)).getText().toString(); 

     // intent to take the viewbook activity as its next dextination 
     Intent i = new Intent(getApplicationContext(), ViewBook.class); 

     // putting the name of the book with the inten extra package to use it as 
     // a key to retrieve the book info from the database and display it 
     i.putExtra("bookname",bookname); 
     i.putExtra("category",Bcategory); 
     i.putExtra("Bauthor",Bauthor); 
     i.putExtra("Bedition",Bedition); 

     startActivity(i); 
    } 
}); 

ich viele Methoden ausprobiert und die meisten von ihnen mit einer Out gebundener Ausnahme und Index außerhalb der Grenzen enden.

+2

Was ist die Relevanz aller 400 Codezeilen, die Sie gepostet haben? Wie versuchen sie, das von Ihnen gepostete Problem zu lösen oder zu beeinflussen? Wenn sie das nicht tun, warum haben Sie sie aufgenommen? Bitte entferne sie. Lesen Sie die Hilfe, insbesondere zur Bereitstellung eines [MCVE]. –

+0

Ich vereinfachte den Code :) keine Hilfe? – Aborroum

Antwort

0

Innerhalb von onItemClick(...) haben Sie Zugriff auf die Position des Elements, auf das geklickt wurde, und auf die Quelle der Elemente, sodass Sie diese Informationen verwenden können, um das tatsächliche Objekt zu erhalten, auf das geklickt wurde.

Ich habe die Parameter in onItemClick() umbenannt, um ihnen einen aussagekräftigeren Namen zu geben und angenommen, dass Sie passende Getter-Methoden für die Felder in Book haben.

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Book b = bookList.get(position); 

    Intent i = new Intent(Romance.this, ViewBook.class) 
      .putExtra("bookname", b.getTitle()) 
      .putExtra("category", b.getCategory()) 
      .putExtra("Bauthor", b.getAuthor()) 
      .putExtra("Bedition", b.getEdition); 

    startActivity(i); 
} 
+0

vielen Dank George, stell dir vor, 7 Stunden Codierung und endlich hast du mich gerettet lol ich fühle mich dumm, vielen Dank wieder :) – Aborroum

+0

Gern geschehen. Froh, dass ich helfen konnte. –

Verwandte Themen