2016-12-31 3 views
0

Ich habe online Code verwendet, um JSON zu einer Listenansicht in Android zu analysieren. Nun möchte ich, indem ich auf ein Element in der Listenansicht klicke, die Daten in der angeklickten Zeile an eine andere Aktivität senden. Andere Lösungen versucht, aber nicht funktioniert.Wie kann der ausgewählte Artikel in einer JSON-Listenansicht an eine andere Aktivität gesendet werden?

Woran ich gerade arbeite, senden Sie ein Zitat und seinen Autor zu einer anderen Aktivität.

public class MainActivity extends AppCompatActivity { 

private String TAG = MainActivity.class.getSimpleName(); 
public ListView lv; 

ArrayList<HashMap<String, String>> contactList; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    contactList = new ArrayList<>(); 
    lv = (ListView) findViewById(R.id.list); 

    new GetContacts().execute(); 


} 

private class GetContacts extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     Toast.makeText(MainActivity.this,"Json Data is downloading",Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     HttpHandler sh = new HttpHandler(); 
     // Making a request to url and getting response 
     String url="https://gist.githubusercontent.com/chefk5/b2a6b17037e989b902834a70cc9b4ce7/raw/667f7fe8aa74cea7e54dfb69a0d2015f7b934f0d/quotes.json"; 
     String jsonStr = sh.makeServiceCall(url); 

     Log.e(TAG, "Response from url: " + jsonStr); 
     if (jsonStr != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 

       // Getting JSON Array node 
       JSONArray contacts = jsonObj.getJSONArray("quotes"); 

       // looping through All Contacts 
       for (int i = 0; i < contacts.length(); i++) { 
        JSONObject c = contacts.getJSONObject(i); 
        String quote = c.getString("quote"); 
        String name = c.getString("name"); 

        // tmp hash map for single contact 
        HashMap<String, String> contact = new HashMap<>(); 

        // adding each child node to HashMap key => value 
        contact.put("quote", quote); 
        contact.put("name", name); 

        // adding contact to contact list 
        contactList.add(contact); 
       } 
      } catch (final JSONException e) { 
       Log.e(TAG, "Json parsing error: " + e.getMessage()); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), 
           "Json parsing error: " + e.getMessage(), 
           Toast.LENGTH_LONG).show(); 
        } 
       }); 

      } 

     } else { 
      Log.e(TAG, "Couldn't get json from server."); 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), 
          "Couldn't get json from server. Check LogCat for possible errors!", 
          Toast.LENGTH_LONG).show(); 
       } 
      }); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     ListAdapter adapter = new SimpleAdapter(MainActivity.this, contactList, 
       R.layout.list_item, new String[]{ "quote","name"}, 
       new int[]{R.id.email,R.id.mobile}); 
     lv.setAdapter(adapter); 


    } 


} 

Antwort

0

tun dies in OnPostExecute

ListAdapter adapter = new SimpleAdapter(MainActivity.this, contactList, 
       R.layout.list_item, new String[]{ "quote","name"}, 
       new int[]{R.id.email,R.id.mobile}); 
     lv.setAdapter(adapter); 
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       String quete = contactList.get(i).getQuete(); 
       String name = contactList.get(i).getName(); 
       Intent intent = new Intent(MainActivity.this, OtherActivity.class); 
       intent.putExtra("QUETE", quete); 
       intent.putExtra("NAME", name); 
       startActivity(intent); 
      } 
     }); 

jetzt in Ihrem OTHER, legen Sie die folgende Codezeile in OnCreate() Methode

String name = getIntent().getExtraString("NAME"); 
String quete = getIntent().getExtraString("QUETE"); 

das ist alles :)

+0

von wo aus Ich kann getQuete() und getName() bekommen? – Chefk5

+0

Es hat funktioniert, danke! – Chefk5

Verwandte Themen