I am trying to get values from a list view. The list view is set by an array list of hashmap type. So , if I am trying to get the values in a string I get the error HashMap cannot be cast to java.lang.string

details1.java

package com.example.festipedia_logo;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import org.apache.http.NameValuePair;

import org.apache.http.message.BasicNameValuePair;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import com.actionbarsherlock.app.SherlockFragment;

import com.actionbarsherlock.app.SherlockListFragment;

//import com.example.festipedia_logo.Searchpage.LoadAllProducts;

//import com.example.connection.disp;

import android.app.Activity;

import android.app.Fragment;

import android.app.ListActivity;

import android.app.ProgressDialog;

import android.content.Intent;

import android.os.AsyncTask;

import android.os.Bundle;

import android.support.v4.app.FragmentTransaction;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.Spinner;

import android.widget.TextView;

import android.widget.Toast;

public class details1 extends SherlockFragment {

ArrayAdapter adapter;

String[] city;

// Progress Dialog

private ProgressDialog pDialog;

// Creating JSON Parser object

JSONParser jParser = new JSONParser();

EditText b;

ArrayList> productsList;

// url to get all products list

private static String url_all_products = "http://192.168.43.77/festipedia/get_all_products.php";

Button a;

// JSON Node names

private static final String TAG_SUCCESS = "success";

private static final String TAG_PRODUCTS = "products";

private static final String TAG_NAME = "eventname";

// products JSONArray

JSONArray products = null;

ListView l;

Spinner spinner;

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.second);

View rootView = inflater.inflate(R.layout.home2, container, false);

// setContentView(R.layout.all_products);

l = (ListView) rootView.findViewById(R.id.list);

// Hashmap for ListView

productsList = new ArrayList>();

new LoadAllProducts().execute();

l.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

// Do something

// String itemValue = (String) l.getItemAtPosition(position);

// Intent intent = new Intent(getActivity().getBaseContext(),

// MainActivity.class);

// intent.putExtra("message", itemValue);

// getActivity().startActivity(intent);

// Bundle args = new Bundle();

// args.putString("doctor_id",itemValue);

// details1 newFragment = new details1 ();

// newFragment.setArguments(args);

//String str = ((TextView)childView).getText().toString();

//MainActivity ob=new MainActivity();

// ListView Clicked item index

int itemPosition = position;

// ListView Clicked item value

String itemValue = (String) l.getItemAtPosition(position);

final FragmentTransaction ft = getFragmentManager().beginTransaction();

ft.replace(R.id.content_frame,new SlidetabTesting(itemValue) , "Fest Content");

ft.commit();

}

});

return rootView;

}

/**

* Background Async Task to Load all product by making HTTP Request

* */

class LoadAllProducts extends AsyncTask {

@Override

protected void onPreExecute() {

super.onPreExecute();

pDialog = new ProgressDialog(getActivity());

pDialog.setMessage("Loading products. Please wait...");

pDialog.setIndeterminate(false);

pDialog.setCancelable(false);

pDialog.show();

}

/**

* getting All products from url

* */

protected String doInBackground(String... args) {

// Building Parameters

List params = new ArrayList();

// getting JSON string from URL

JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);

// Log.d("All Products: ", json.toString());

try {

// Checking for SUCCESS TAG

int success = json.getInt(TAG_SUCCESS);

if (success == 1) {

// products found

// Getting Array of Products

products = json.getJSONArray(TAG_PRODUCTS);

// looping through All Products

for (int i = 0; i < products.length(); i++) {

JSONObject c = products.getJSONObject(i);

// Storing each json item in variable

String name = c.getString(TAG_NAME);

//l.setFilterText(id);

// creating new HashMap

HashMap map = new HashMap();

// adding each child node to HashMap key => value

map.put(TAG_NAME, name);

// adding HashList to ArrayList

productsList.add(map);

}

} else {

// no products found

// Launch Add New product Activity

}

} catch (JSONException e) {

e.printStackTrace();

}

return null;

}

/**

* After completing background task Dismiss the progress dialog

* **/

protected void onPostExecute(String file_url) {

// dismiss the dialog after getting all products

pDialog.dismiss();

// updating UI from Background Thread

getActivity().runOnUiThread(new Runnable() {

public void run() {

/**

* Updating parsed JSON data into ListView

* */

ListAdapter adapter = new SimpleAdapter(

getActivity(), productsList,

R.layout.list_item, new String[] {

TAG_NAME},

new int[] { R.id.name });

// updating listview

l.setAdapter(adapter);

}

});

}

}

}

LOGCAT

03-30 20:03:43.341: E/ViewRootImpl(8395): sendUserActionEvent() mView == null

03-30 20:03:47.111: E/ViewRootImpl(8395): sendUserActionEvent() mView == null

03-30 20:03:49.416: E/AndroidRuntime(8395): FATAL EXCEPTION: main

03-30 20:03:49.416: E/AndroidRuntime(8395): Process: com.example.festipedia_logo, PID: 8395

03-30 20:03:49.416: E/AndroidRuntime(8395): java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String

03-30 20:03:49.416: E/AndroidRuntime(8395): at com.example.festipedia_logo.details1$1.onItemClick(details1.java:103)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.widget.AdapterView.performItemClick(AdapterView.java:308)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.widget.AbsListView.performItemClick(AbsListView.java:1483)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3485)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.widget.AbsListView$3.run(AbsListView.java:4843)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.os.Handler.handleCallback(Handler.java:733)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.os.Handler.dispatchMessage(Handler.java:95)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.os.Looper.loop(Looper.java:157)

03-30 20:03:49.416: E/AndroidRuntime(8395): at android.app.ActivityThread.main(ActivityThread.java:5356)

03-30 20:03:49.416: E/AndroidRuntime(8395): at java.lang.reflect.Method.invokeNative(Native Method)

03-30 20:03:49.416: E/AndroidRuntime(8395): at java.lang.reflect.Method.invoke(Method.java:515)

03-30 20:03:49.416: E/AndroidRuntime(8395): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)

03-30 20:03:49.416: E/AndroidRuntime(8395): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)

03-30 20:03:49.416: E/AndroidRuntime(8395): at dalvik.system.NativeStart.main(Native Method)

Is there any way by which I will be able to retrieve values

解决方案

java.lang.ClassCastException: java.util.HashMap cannot be cast to

java.lang.String

This line is the problem

String itemValue = (String) l.getItemAtPosition(position);

Change to

l.setOnItemClickListener(new OnItemClickListener() {

@Override

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

HashMap map =(HashMap)l.getItemAtPosition(position);

String value = map.get(TAG_SUCCESS);

Sting products = map.get(TAG_PRODUCTS);

String name= map.get(TAG_NAME);

... // rest of the code

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐