ListFragment in onItemClickListener() startActivity crashes app - android

I have problem with calling startActivity(intent) from onItemClickListener() on ListFragment. When I click on an item from listview the application crashes.
Code is here:
public class AndroidFragment extends SherlockListFragment{
static{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
static final String URL = "***";
// XML node keys
static final String KEY_ITEM = "novost"; // parent node
//static final String KEY_ID = "id";
static final String KEY_NAME = "naslov";
static final String KEY_COST = "datum";
static final String KEY_DESC = "text";
static final String KEY_LINK = "link";
static final String KEY_LINK1 = "doc";
ArrayList<HashMap<String, String>> menuItems;
String[] from = { KEY_NAME, KEY_DESC, KEY_COST,KEY_LINK,KEY_LINK1};
/** Ids of views in listview_layout */
int[] to = { R.id.naslov, R.id.novost, R.id.datum,R.id.link,R.id.link1};
ListView list;
#Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new loadListView().execute();
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.naslov)).getText().toString();
String cost = ((TextView) view.findViewById(R.id.datum)).getText().toString();
String description = ((TextView) view.findViewById(R.id.novost)).getText().toString();
String link = ((TextView) view.findViewById(R.id.link)).getText().toString();
String link1 = ((TextView) view.findViewById(R.id.link1)).getText().toString();
//String link_asd=link;
// Starting new intent
Intent in = new Intent(getActivity().getBaseContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
in.putExtra(KEY_DESC, description);
if(link==null)
{
link=null;
}else{
in.putExtra(KEY_LINK, link);
in.putExtra(KEY_LINK1, link1);
}
//in.putExtra("link1", link_asd);
startActivity(in);
}
});
}
/*#Override
public void onListItemClick(ListView list, View v, int position, long id) {
/**
* Toast message will be shown when you click any list element
//Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
String name = ((TextView) v.findViewById(R.id.naslov)).getText().toString();
String cost = ((TextView) v.findViewById(R.id.datum)).getText().toString();
String description = ((TextView) v.findViewById(R.id.novost)).getText().toString();
String link = ((TextView) v.findViewById(R.id.link)).getText().toString();
String link1 = ((TextView) v.findViewById(R.id.link1)).getText().toString();
//String link_asd=link;
// Starting new intent
Intent in = new Intent(getActivity(), SingleMenuItemActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
in.putExtra(KEY_DESC, description);
if(link==null)
{
}else{
in.putExtra(KEY_LINK, link);
in.putExtra(KEY_LINK1, link1);
}
//in.putExtra("link1", link_asd);
startActivity(in);
Log.e("error",name);
super.onListItemClick(list, v, position, id);
}*/
#Override
public void onResume() {
super.onResume();
//Log.w("Aplikacija_resume","Startovana" );
//new loadListView().execute();
}
public class loadListView extends AsyncTask<Integer, String, String>
{
private final ProgressDialog dialog = new ProgressDialog(getActivity());
#Override protected void onPreExecute()
{
//Toast.makeText(getActivity(), "Ucitavanje...", Toast.LENGTH_LONG).show();
//
this.dialog.setMessage("Molimo da sačekate ...");
super.onPreExecute();
}
#Override protected String doInBackground(Integer... args)
{ // updating UI from Background Thread
menuItems = new ArrayList<HashMap<String, String>>();
final XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, "Datum: " + parser.getValue(e, KEY_COST));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
map.put(KEY_LINK1, parser.getValue(e, KEY_LINK1));
// adding HashList to ArrayList
menuItems.add(map);
}
return null;
}
#Override
protected void onPostExecute(String args)
{
//Toast.makeText(getActivity(), "Ucitano", Toast.LENGTH_LONG).show();
SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), menuItems, R.layout.list_row, from, to);
setListAdapter(adapter);
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
// Instantiating an adapter to store each items
// R.layout.listview_layout defines the layout of each item
}
}
}

Add SingleMenuItemActivity to your manifest :)

Related

On scroll add more json data in listView

I made one ListView with image and text. I am able to parse json data in the ListView. But my requirenment is to load 10 rows of Json data, then at the bottom have a load more. to get the next 10, etc etc.
Suggest me if anyone knows the solution using json please...
Here is my code for Adapter.java
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name
TextView duration = (TextView)vi.findViewById(R.id.duration); // duration
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image);
ImageView thumb_image1=(ImageView)vi.findViewById(R.id.imageView1);// thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(CustomizedListView.USER_NAME));
artist.setText(song.get(CustomizedListView.KEY_ARTIST));
duration.setText(song.get(CustomizedListView.KEY_DURATION));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL1), thumb_image1);
return vi;
}
}
Here is the code of MainActivity.java
public class CustomizedListView extends Activity {
// All static variables
static final String URL = XXXX.json;
//private static String URL;
// XML node keys
static final String KEY_SONG = "review_full"; // parent node
static final String KEY_ID = "activity_id";
static final String USER_NAME = "user_name";
static final String KEY_ARTIST = "review_small";
static final String KEY_DURATION = "time";
static final String KEY_THUMB_URL = "thumb";
static final String KEY_THUMB_URL1 = "photo";
String type;
String user_name1;
String thumbnail;
String subscriber_name;
String review_full;
String status;
String photo;
ListView list;
String review_small;
LazyAdapter adapter;
String[] image;
ArrayList<HashMap<String, String>> songsList;
public String image1=null;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Intent intent1 = getIntent();
//String easyPuzzle = intent1.getExtras().getString("Id");
//URL=URL0+easyPuzzle;
songsList = new ArrayList<HashMap<String, String>>();
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(URL);
try{
Log.d("Parsing JSON Data", "Before json1 try2");
JSONArray activities = json.getJSONArray("activities");
Log.d("Parsing JSON Data", "after activiti");
for (int i = 0; i < activities.length(); i++) {
JSONObject c = activities.getJSONObject(i);
image=new String[2];
Log.d("Parsing JSON Data", "inside for loop");
HashMap<String, String> map = new HashMap<String, String>();
//checking type content
type=c.getString("type");
if(type.contains("user")){
user_name1=c.getString( USER_NAME);
thumbnail=c.getString(KEY_THUMB_URL);
map.put(KEY_THUMB_URL, thumbnail);
map.put(USER_NAME, user_name1+" "+"joined etable community");
map.put(KEY_DURATION, c.getString( KEY_DURATION));
// map.put(KEY_ARTIST,null);
}else if(type.contains("checkin")){
user_name1=c.getString( USER_NAME);
subscriber_name=c.getString("subscriber_name");
thumbnail=c.getString(KEY_THUMB_URL);
photo=c.getString("photo");
if(photo.contains("False")){
image1="False";
map.put(KEY_THUMB_URL1, image1);
}else{
image = photo.split("image=");
image1=image[1];
map.put(KEY_THUMB_URL1, image1);
}
map.put(KEY_THUMB_URL, thumbnail);
map.put(USER_NAME, user_name1+" "+"was spotted at"+" "+subscriber_name);
map.put(KEY_DURATION, c.getString( KEY_DURATION));
// map.put(KEY_ARTIST,null);
}else if(type.contains("favorite")){
subscriber_name=c.getString("subscriber_name");
user_name1=c.getString( USER_NAME);
thumbnail=c.getString(KEY_THUMB_URL);
map.put(KEY_THUMB_URL, thumbnail);
map.put(USER_NAME, user_name1+" "+"favorited"+" "+subscriber_name);
map.put(KEY_DURATION, c.getString( KEY_DURATION));
//map.put(KEY_ARTIST,null);
}else if(type.contains("review")){
subscriber_name=c.getString("subscriber_name");
user_name1=c.getString( USER_NAME);
review_small=c.getString("review_small");
review_full=c.getString("review_full");
thumbnail=c.getString(KEY_THUMB_URL);
map.put(KEY_THUMB_URL, thumbnail);
map.put(USER_NAME, user_name1+" "+"wrote a review for"+" "+subscriber_name);
map.put(KEY_DURATION, c.getString( KEY_DURATION));
map.put(KEY_ARTIST,review_small);
map.put(KEY_SONG,review_full);
}else if(type.contains("status")){
user_name1=c.getString( USER_NAME);
status=c.getString("full_status");
thumbnail=c.getString(KEY_THUMB_URL);
map.put(KEY_THUMB_URL, thumbnail);
map.put(USER_NAME, user_name1+" "+"says\n"+" "+status);
map.put(KEY_DURATION, c.getString( KEY_DURATION));
//map.put(KEY_ARTIST,null);
}else{
user_name1=c.getString( USER_NAME);
map.put(USER_NAME, user_name1+" "+"some problem");
//map.put(KEY_ARTIST,null);
}
// adding HashList to ArrayList
songsList.add(map);
}}catch (JSONException e) {
e.printStackTrace();
}
list=(ListView)findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
list.invalidateViews();
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
list.invalidateViews();
Log.d("Parsing JSON Data", "start click");
HashMap<String, String> map = songsList.get(position);
Intent in = new Intent(CustomizedListView.this, LargeView.class);
in.putExtra("text", map.get(USER_NAME));
in.putExtra("image", map.get(KEY_THUMB_URL));
in.putExtra("review", map.get(KEY_SONG));
Log.d("Parsing JSON Data", "inside profile33");
startActivity(in);
Log.d("Parsing JSON Data", USER_NAME);
}
});
}
}
Setting your adapter.setNotifysetchanged() will display the added items in your ListView Here i give you some example that how to integrate the load more with your ListView
1.example
2.Costum Load more listview

java.lang.RuntimeException: Unable to start activity ComponentInfo Error

I wanna ask something about android programming..
I create a class that return display from rss xml file to android but i get some error
04-08 14:37:19.162: E/AndroidRuntime(381):
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.xmlreader/com.example.xmlreader.MainActivity}:
java.lang.NullPointerException
Code:
static final String URL = "http://api.androidhive.info/pizza/?format=xml";
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_ID = "id";
static final String KEY_NAME = "name";
static final String KEY_COST = "cost";
static final String KEY_DESC = "description";
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXMLFromURL(URL); // getting XML
Document doc = parser.getDomElem(xml); // getting DOM element
(*) NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
// adding HashList to ArrayList
menuItems.add(map);
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
R.id.name, R.id.desciption, R.id.cost });
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
in.putExtra(KEY_DESC, description);
startActivity(in);
}
});
}
the error in line 38 or line i was give (*) this mark...
pleas help me...
If the nullpointer is coming up on below line (with *):
(*) NodeList nl = doc.getElementsByTagName(KEY_ITEM); //i reckon the nullpointer is coming up on the doc object...
Then I reckon to check whether the xml which is being retrieved from the getXMLFromURL method
is correct?:
XMLParser parser = new XMLParser();
String xml = parser.getXMLFromURL(URL); // getting XML (Is this correctly retreived?
Document doc = parser.getDomElem(xml); // getting DOM element (This is returning null)
For more help share your XMLParser class
You need to use a Thread or AsyncTask to perform the "Networking Operations". Otherwise you will get NetworkOnMainThreadException. read this
Add permission to AndroidManifest.xml.
<uses-permission android:name="android.permission.INTERNET"/>
An example using a Thread
menuItems = new ArrayList<HashMap<String, String>>();
final XMLParser parser = new XMLParser();
Thread th = new Thread(new Runnable() {
#Override
public void run() {
xml = parser.getXmlFromUrl(URL);
handler.post(new Runnable() { //create an object of Handler class in onCreate() - (android.os.Handler)
#Override
public void run() {
Document doc = parser.getDomElement(xml);
nl =doc.getElementsByTagName(KEY_ITEM);
//other code inside onCreate() - for loop
}
});
}
}
th.start();
SimpleAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.list_item,
new String[]{KEY_NAME, KEY_COST, KEY_DESCRIPTION}, new int[]{R.id.name, R.id.cost, R.id.description});
setListAdapter(adapter);

Xml parsing in android with singlemenuitem

Hi i wrote one xml parsing example.here i have to get the data information from mysql database and display it in android emulator successfully.
this is my code:
public class CustomizedListView extends Activity {
// All static variables
static final String URL = "http://192.168.1.168/xcart432pro/orderdetails.xml";
// XML node keys
static final String KEY_SONG = "Order"; // parent node
static final String KEY_ID = "orderid";
static final String KEY_TITLE = "orderid";
static final String KEY_ARTIST = "payment_method";
static final String KEY_DURATION = "total";
ListView list;
LazyAdapter adapter;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
// adding HashList to ArrayList
songsList.add(map);
}
list=(ListView)findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String Orderid= ((TextView) view.findViewById(R.id.title)).getText().toString();
String Price = ((TextView) view.findViewById(R.id.duration)).getText().toString();
String Description = ((TextView) view.findViewById(R.id.artist)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_TITLE, Orderid);
in.putExtra(KEY_DURATION, Price);
in.putExtra(KEY_ARTIST, Description);
startActivity(in);
}
});
}
}
dis is my singlemenuitem.java class is:
public class SingleMenuItemActivity extends Activity {
// XML node keys
static final String KEY_TITLE = "orderid";
static final String KEY_ARTIST = "payment_method";
static final String KEY_DURATION = "total";
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_list_item);
// getting intent data
Intent in = getIntent();
// Get XML values from previous intent
String product = in.getStringExtra(KEY_DURATION);
String login = in.getStringExtra(KEY_TITLE);
String description = in.getStringExtra(KEY_ARTIST);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblPName = (TextView) findViewById(R.id.cost_label);
TextView lblDesc = (TextView) findViewById(R.id.description_label);
lblName.setText(login);
lblPName.setText(product);
lblDesc.setText(description);
}
}
Here i have to successfully displayed on android emulator.
but i wish to display on first page orderid and payment_method only.then it is move to next page means have to display total for that particular id.please give me solutions.how can i to do.i wish to my output is :
if i clicked 13 means that particular order total only displayed on next activity.
How is to do.please help me.
i got the answer.if u need hide the "description" field by adding andorid:visibility="gone" to description label in your xml file. So that the description filed will be present in listview but it won't be visible.
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra("KEY_TITLE", Orderid);
in.putExtra("KEY_DURATION", Price);
in.putExtra("KEY_ARTIST", Description);
startActivity(in);
singlemenuitem.java
product = getIntent().getExtras().getString("KEY_TITLE");
login = getIntent().getExtras().getString("KEY_DURATION");
description = getIntent().getExtras().getInt("KEY_ARTIST");

Android XML Parsing & Preferences Error

Im parsing an xml file and i keep getting a nullpointer exception. I don't know here the null pointer is :(
ListView.java
static String URL = "https://dl.dropbox.com/u/####/wosm-library-EN.xml";
static final String KEY_ITEM = "item";
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_DESCRIPTION = "description";
static final String KEY_FILESIZE = "filesize";
static final String KEY_THUMB_URL = "thumb_url";
static final String KEY_DOCUMENT_URL = "document_url";
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
ListView list;
LazyAdapter adapter;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.library);
sharedPrefs.getBoolean("french", false); {
URL="https://dl.dropbox.com/u/######/wosm-library-EN.xml";
}
sharedPrefs.getBoolean("french", true);
{
URL="https://dl.dropbox.com/u/######/wosm-library-FR.xml";
}
ArrayList<HashMap<String, String>> libraryList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL);
Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_DESCRIPTION, parser.getValue(e, KEY_DESCRIPTION));
map.put(KEY_FILESIZE, parser.getValue(e, KEY_FILESIZE));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
map.put(KEY_DOCUMENT_URL, parser.getValue(e, KEY_DOCUMENT_URL));
libraryList.add(map);
}
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, libraryList);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String description = ((TextView) view.findViewById(R.id.artist)).getText().toString();
//String thumb_url = ((ImageView)view.findViewById(R.id.list_image)).getImageMatrix().toString();
//String thumb_url = ((TextView) view.findViewById(R.id.thumburl)).getText().toString();
String filesize = ((TextView) view.findViewById(R.id.duration)).getText().toString();
String thumburl = ((TextView) view.findViewById(R.id.imgurl)).getText().toString();
String doc_url = ((TextView) view.findViewById(R.id.documenturl)).getText().toString();
Intent in = new Intent(CustomizedListView.this, org.scouts.library.SingleMenuItem.class);
in.putExtra(KEY_TITLE, title);
in.putExtra(KEY_DESCRIPTION, description);
//in.putExtra(KEY_THUMB_URL, thumb_url);
in.putExtra(KEY_FILESIZE, filesize);
in.putExtra(KEY_THUMB_URL, thumburl);
in.putExtra(KEY_DOCUMENT_URL, doc_url);
startActivity(in);
}
});
}
}
i only started getting the nullpointer excepetion after i added the preference variable
Put the SharedPreferences line into you onCreate() method.
Also you need to use if(){//do something} else {//do something else}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
if(sharedPrefs.getBoolean("french", false))
{
URL="https://dl.dropbox.com/u/######/wosm-library-EN.xml";
}
else
{
URL="https://dl.dropbox.com/u/######/wosm-library-FR.xml";
}
A far better way to do this would be to use a resource string for the Dropbox URL and provide different localizations. Then you would not need this code at all.

Android ListView image onclick parsing

My list view is parsed from a online resource, but i cant get the listview to pass the image src to the single list item
SingleMenuItemActivity
static final String KEY_SONG = "song";
static final String KEY_ARTIST = "artist";
static final String KEY_THUMB_URL = "thumb_url";
static final String KEY_DURATION = "duration";
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.libraryonclick);
// getting intent data
Intent in = getIntent();
// Get XML values from previous intent
String song = in.getStringExtra(KEY_SONG);
String artist = in.getStringExtra(KEY_ARTIST);
String thumb_url = in.getStringExtra(KEY_THUMB_URL);
String duration = in.getStringExtra(KEY_DURATION);
// Displaying all values on the screen
TextView lblSong = (TextView) findViewById(R.id.textView1);
TextView lblArtist = (TextView) findViewById(R.id.textView2);
Drawable imgThumb = ((ImageView)findViewById(R.id.onclickthumb)).getDrawable(); // thumb image
TextView lblDuration = (TextView) findViewById(R.id.textView3);
Button link3Btn = (Button)findViewById( R.id.button1 );
link3Btn.setOnClickListener( new View.OnClickListener()
{
public void onClick(View v)
{
Uri uri = Uri.parse("http://google.com");
startActivity( new Intent( Intent.ACTION_VIEW, uri ) );
}
});
lblSong.setText(song);
lblArtist.setText(artist);
lblDuration.setText(duration);
imgThumb.setImageResource(thumb_url);
//Maybe more code here?
}
ListViewActivity
public class CustomizedListView extends Activity {
// All static variables
static final String URL = "http://dl.dropbox.com/u/48258247/music.xml";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static final String KEY_THUMB_URL = "thumb_url";
ListView list;
LazyAdapter adapter;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.library);
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// adding HashList to ArrayList
songsList.add(map);
}
list=(ListView)findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String song = ((TextView) view.findViewById(R.id.title)).getText().toString();
String artist = ((TextView) view.findViewById(R.id.artist)).getText().toString();
String thumb_url = ((TextView) view.findViewById(R.id.list_image)).getText().toString();
String duration = ((TextView) view.findViewById(R.id.duration)).getText().toString();
// Starting new intent
Intent in = new Intent(CustomizedListView.this, org.scouts.library.SingleMenuItem.class);
in.putExtra(KEY_SONG, song);
in.putExtra(KEY_ARTIST, artist);
in.putExtra(KEY_THUMB_URL, thumb_url);
in.putExtra(KEY_DURATION, duration);
startActivity(in);
}
});
}
i think i need to parse through the imageloader class maybe
You can simply try this one -
URL url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);
Create one ImageView in your CustomizedListView class and oncreate() method receive url path from the calling file through intent. And paste it in below code and try it.
And, have a look this example

Categories

Resources