gpt4 book ai didi

java - 将值从 ListView 传递到另一个 Activity/类

转载 作者:行者123 更新时间:2023-12-01 06:42:41 25 4
gpt4 key购买 nike

所以这里我有类 ListProductActivity.java,它根据用户输入的搜索条件显示产品列表,并使用 Json 从 MySQL 服务器检索数据。我的问题是,当用户从 ListView 中选择另一个 Activity 时,如何传递单个值(在本例中为productName),以便我可以在新 Activity (viewProductActivity.java)中使用该值。

ListProductActivity.java

public class ListProductActivity extends AppCompatActivity {

private ListView list;
private ProgressDialog loading;
ArrayList<HashMap<String, String>> productList;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_product);
list = (ListView) findViewById(R.id.listView);
productList = new ArrayList<HashMap<String,String>>();
getData();
}
public void getData(){

String s = getIntent().getStringExtra("productName");

loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false);

String url = Config.DATA_URL2 + s;

StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showList(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(ListProductActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show();
}
});

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

}

private void showList(String response){

try {
JSONObject jsonObject = new JSONObject(response);
JSONArray products = jsonObject.getJSONArray(Config.JSON_ARRAY);

for(int i=0;i<products.length();i++){
JSONObject productData = products.getJSONObject(i);
String name = productData.getString(KEY_NAME);
String price = productData.getString(KEY_PRICE);
String brand = productData.getString(KEY_BRAND);

HashMap<String,String> product = new HashMap<String,String>();

product.put(KEY_NAME,name);
product.put(KEY_PRICE,price);
product.put(KEY_BRAND,brand);

productList.add(product);
}

ListAdapter adapter = new SimpleAdapter(
ListProductActivity.this, productList, R.layout.list_product,

new String[]{KEY_NAME,KEY_PRICE,KEY_BRAND},
new int[]{R.id.name, R.id.price, R.id.brand}
);

list.setAdapter(adapter);

} catch (JSONException e) {
e.printStackTrace();
}

}

}

那么,我可以在 ListProductActivity 类中实现什么函数,将基于 listView 中选择的用户的 ProductName 传递给另一个 Activity ,以及如何在 viewProductActivity 类中接收传递的值?

我真的希望你们能把这个功能贴出来,并简要解释一下它是如何工作的,这样我就能很好地理解代码。对代码进行注释会更加清晰和有帮助。谢谢。

已编辑

这是搜索后 ListView 的结果图片 Click To View Image

最佳答案

首先简单地在当前 Activity 上实现listview的onItemClickListener

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

String product_name = productList.get(position).get(KEY_NAME);
Intent intent = new Intent(YourCurrentActivity.this,YourNextActivity.class);
intent.putExtra("product_name",product_name);
startActivity(intent);
}
});

并在 YourNextActivity.java 的 onCreate 方法中接收该值,如下所示:

Bundle bundle = getIntent().getExtras();
String productname = bundle.getString("product_name");

关于java - 将值从 ListView 传递到另一个 Activity/类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485882/

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