【发布时间】:2017-05-20 01:06:46
【问题描述】:
所以这里我有 ListProductActivity.java 类,它根据用户输入的搜索条件显示产品列表,并且使用 Json 从 MySQL 服务器检索数据。我的问题是,当用户从列表视图中选择到另一个活动时,如何将单个值(在这种情况下为 productName)传递给另一个活动,以便我可以在新活动(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 中选择的用户的产品名称传递给另一个活动,以及如何在 viewProductActivity 类中接收传递的值?
我真的希望你们可以发布这个函数并简要解释它是如何工作的,这样我就可以很好地理解代码。对代码的评论将更加清晰和有用。谢谢。
编辑
这是列表视图搜索后的结果图片 Click To View Image
【问题讨论】:
-
您是否尝试通过您的列表视图适配器中的意图传递它
-
@AliAsheer 我不知道怎么做。也许你可以告诉我怎么做?
-
贴出适配器代码,包括你去新Activity的部分
-
您可以在您的
listView上设置setOnItemSelectlistner并获取所选项目的值并将其传递给意图 -
@KenZo Miyazaw 您可以在 Murat K. 发布链接的帖子中找到答案