gpt4 book ai didi

android - 将数据从 listView 传递到 Activity

转载 作者:太空狗 更新时间:2023-10-29 16:30:24 25 4
gpt4 key购买 nike

在 Android 应用程序中,我有一个带有 listView 的 Activity 。listView 由 JSON 字符串填充。我想将所选行中的一些 JSON 数据传递给另一个 Activity 。这是当前的方法:

private void showJSON(String json){
ParseJSON pj = new ParseJSON(json);
pj.parseJSON();
CustomList cl = new CustomList(this, ParseJSON.ids,ParseJSON.nombres,ParseJSON.apellidos,ParseJSON.emails,ParseJSON.tels);
listView.setAdapter(cl);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

Toast.makeText(Asesor.this, "Ha seleccionado el asesor -> "+ ParseJSON.nombres, Toast.LENGTH_LONG).show();
Intent i = new Intent(Asesor.this, WelcomeNoLogin.class);

// Pass listview item click position
i.putExtra("position", ParseJSON.nombres);
// Open SingleItemView.java Activity
startActivity(i);
}

});

我的问题是我得到了所选行数据的奇怪值。

例如,如果我选择第二行,我会为 ParseJSON.nombre 获取值 Ljava.lang.string;@42197b8。我应该更改什么才能获得真实数据?

编辑:ParseJSON.class

public class ParseJSON {
public static String[] ids;
public static String[] nombres;

public static String[] apellidos;

public static String[] tels;
public static String[] emails;

public static final String JSON_ARRAY = "result";
public static final String KEY_ID = "id";
public static final String KEY_NOMBRE = "nombre";

public static final String KEY_TEL = "tel";

public static final String KEY_APELLIDOS = "apellidos";
public static final String KEY_EMAIL = "email";

private JSONArray users = null;

private String json;

public ParseJSON(String json){
this.json = json;
}

protected void parseJSON(){
JSONObject jsonObject=null;
try {
jsonObject = new JSONObject(json);
users = jsonObject.getJSONArray(JSON_ARRAY);

ids = new String[users.length()];
nombres = new String[users.length()];
apellidos = new String[users.length()];
tels = new String[users.length()];

emails = new String[users.length()];

for(int i=0;i<users.length();i++){
JSONObject jo = users.getJSONObject(i);
ids[i] = jo.getString(KEY_ID);
nombres[i] = jo.getString(KEY_NOMBRE);
apellidos[i] = jo.getString(KEY_APELLIDOS);
tels[i] = jo.getString(KEY_TEL);

emails[i] = jo.getString(KEY_EMAIL);
}
} catch (JSONException e) {
e.printStackTrace();
}
}

最佳答案

因为您将整个数组对象传递给 Intent 。您必须传递您单击的特定位置的对象。

以下代码可以帮助您:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

Toast.makeText(Asesor.this, "Ha seleccionado el asesor -> "+ ParseJSON.nombres[position], Toast.LENGTH_LONG).show();
Intent i = new Intent(Asesor.this, WelcomeNoLogin.class);

// Pass listview item click position
i.putExtra("position", ParseJSON.nombres[position]); /// update code here
// Open SingleItemView.java Activity
startActivity(i);
}

});

关于android - 将数据从 listView 传递到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com