Come passare i valori da un'attività all'altra usando l'elemento di elenco Toccare
-
21-12-2019 - |
Domanda
Sto cercando di passare i dati di ListItem ciick in un'altra attività, ma ogni volta che tocca una qualsiasi dell'oggetto di elenco né in grado di ottenere il pane tostato né in grado di passare il valore dell'elemento di elenco selezionato a un'altra attività.
Quindi qui voglio sapere:
.Come passare i valori da un'attività all'altra usando il rubinetto sulla voce Elenco?
e secondo
.Perché non mostrare la posizione di elenco TAPpato in Tostato?
mainactivity.java:
@Override
protected void onPostExecute(Void args) {
// Locate the listview in listview_main.xml
listview = (ListView) findViewById(R.id.listview);
// Pass the results into ListViewAdapter.java
adapter = new ListViewAdapter(MainActivity.this, arraylist);
// Set the adapter to the ListView
listview.setAdapter(adapter);
// Close the progressdialog
mProgressDialog.dismiss();
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, position, Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, SingleItemView.class);
// Pass all data rank
intent.putExtra("rank", arraylist.get(position).get(MainActivity.RANK));
// Start SingleItemView Class
startActivity(intent);
}
});
}
.
Dopo aver messo Log.d Ottenere Errore, selezionare il registro completo sotto
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, position, Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
Log.d("RANK::", arraylist.get(position).get(MainActivity.RANK));
.
Log:
06-04 18:21:12.725: E/AndroidRuntime(19957): FATAL EXCEPTION: main
06-04 18:21:12.725: E/AndroidRuntime(19957): android.content.res.Resources$NotFoundException: String resource ID #0x0
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.content.res.Resources.getText(Resources.java:242)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.widget.Toast.makeText(Toast.java:304)
06-04 18:21:12.725: E/AndroidRuntime(19957): at com.androidbegin.jsonparsetutorial.MainActivity$DownloadJSON$1.onItemClick(MainActivity.java:107)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.widget.AdapterView.performItemClick(AdapterView.java:301)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.widget.AbsListView.performItemClick(AbsListView.java:1280)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3071)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.widget.AbsListView$1.run(AbsListView.java:3972)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.os.Handler.handleCallback(Handler.java:615)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.os.Handler.dispatchMessage(Handler.java:92)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.os.Looper.loop(Looper.java:137)
06-04 18:21:12.725: E/AndroidRuntime(19957): at android.app.ActivityThread.main(ActivityThread.java:4921)
06-04 18:21:12.725: E/AndroidRuntime(19957): at java.lang.reflect.Method.invokeNative(Native Method)
06-04 18:21:12.725: E/AndroidRuntime(19957): at java.lang.reflect.Method.invoke(Method.java:511)
06-04 18:21:12.725: E/AndroidRuntime(19957): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)
06-04 18:21:12.725: E/AndroidRuntime(19957): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)
06-04 18:21:12.725: E/AndroidRuntime(19957): at dalvik.system.NativeStart.main(Native Method)
. Soluzione
Cambia questo
Toast.makeText(MainActivity.this, position, Toast.LENGTH_LONG).show();
.
a
Toast.makeText(MainActivity.this, String.valueOf(position), Toast.LENGTH_LONG).show();
. Altri suggerimenti
prova a scrivere seguendo linee in OnCreat invece di OnPostexecute
listview = (ListView) findViewById(R.id.listview);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, position, Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, SingleItemView.class);
// Pass all data rank
intent.putExtra("rank", arraylist.get(position).get(MainActivity.RANK));
// Start SingleItemView Class
startActivity(intent);
}
});
. Prova a utilizzare i metodi di Setag (Object) e GetTag ().Applicare Setag () su ogni vista che rappresenta la riga nella tua valida di lista.Quindi, nel metodo ONITEMClick () Utilizzare la variabile "Visualizza" che viene passata come parametro per estrarre valore superato usando GetTag ().La tua soluzione sembra fine ma usare i tag per passare i valori a onclicks è previsto a causa di motivi di ottimizzazione.