Ich möchte die ID des ausgewählten Artikels in der Listenansicht erhalten, wo die Daten vom Server kommen. Alles funktioniert gut, aber ich kann keine ID an die nächste Aktivität senden, um den ausgewählten Inhalt anzuzeigen. Ich habe diese Zeile:Wie bekomme ich die ausgewählte Artikel-ID in der Listenansicht
String number_of_keys = (lv.getItemAtPosition(position).toString());
aber alle Elemente in der Zeile zurückgeben :( hier mein Code dank
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity2 extends AppCompatActivity implements TextWatcher {
public String number_of_keys;
private String TAG = MainActivity2.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
private String id;
// URL to get contacts JSON
private static String url = "http://farazjou.com/mobile/drugstore";
ArrayList<HashMap<String, String>> drugstoreList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
drugstoreList = new ArrayList<>();
lv = (ListView) findViewById(R.id.list);
new GetDrugs().execute();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
String number_of_keys = (lv.getItemAtPosition(position).toString());
i.putExtra("number_of_keys", number_of_keys);
startActivity(i);
}
});
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
/**
* Async task class to get json by making HTTP call
*/
private class GetDrugs extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(MainActivity2.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
public Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
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 drugstore = jsonObj.getJSONArray("drugstore");
// looping through All Contacts
for (int i = 0; i < drugstore.length(); i++) {
JSONObject c = drugstore.getJSONObject(i);
id = c.getString("id");
String post_title = c.getString("post_title");
String public_title = c.getString("public_title");
HashMap<String, String> drug = new HashMap<>();
drug.put("id", id);
drug.put("post_title", post_title);
drug.put("public_title", public_title);
drugstoreList.add(drug);
}
} 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);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
MainActivity2.this, drugstoreList,
R.layout.list_item2, new String[]{"post_title", "public_title", "id"}
, new int[]{R.id.post_title, R.id.public_title , R.id.public_id});
lv.setAdapter(adapter);
}
}
}