Aditya Prabhakar
Aditya Prabhakar

Reputation: 3

Wants to fetch data in my listview on other activity

I have a listview in my activity. I want to show the data of it when clicked on it on second activity. But is not able to do so. Help. This is the code. What to do so that my data is fetched from listview and is shown in next activity?

ListActivity.java

package com.example.task;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ListActivity extends Activity implements OnItemClickListener{

    ListView list1;

    LoginDataBaseAdapter loginDataBaseAdapter;
ArrayList<HashMap<String, String>> datalist;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);

    loginDataBaseAdapter=new LoginDataBaseAdapter(this);
    loginDataBaseAdapter=loginDataBaseAdapter.open();

    list1=(ListView)findViewById(R.id.list);

     datalist=loginDataBaseAdapter.getAllAnimals();
    ArrayAdapter<HashMap<String, String>> adapter=new         ArrayAdapter<HashMap<String,String>>(getApplicationContext(),    android.R.layout.simple_dropdown_item_1line,datalist);
        list1.setAdapter(adapter);
        list1.setOnItemClickListener(this);
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.list, menu);
    return true;
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub

}

}

Upvotes: 0

Views: 377

Answers (5)

A.Wie
A.Wie

Reputation: 499

MainActivity

String data;
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        // TODO Auto-generated method stub

    data = adapter.getItem(position);
    Intent intent = new Intnet(MainActivity.this, NextActivity.class);
    i.putExtra("data", data);
    startActivity(intent);
    }

to open your data on NextActivity

Intent intent = getIntent();
        String passData= intent.getExtras().getString("data");

Upvotes: 0

Aniket Gupte
Aniket Gupte

Reputation: 122

Well apart from passing data by intents, you can also use Global Variables.

You can check out an example here.

You can set your global variable/s to the value that is applicable when list item is selected (using your onItemClick listner) and then access it in other activity.

Eg:

CLASS MyApp

class MyApp extends Application 
{ public String whatever;}

CODE: ACTIVITY 1

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    // TODO Auto-generated method stub

MyApp as = ((MyApp)getApplicationContext());
as.whatever = position + "Clicked";
}

CODE: ACTIVITY 2

class Blah extends Activity
{

  @Override
  public void onCreate(Bundle b){
  ...
  MyApp as = ((MyApp)getApplicationContext());      
  Log.d(as.whatever);
  ...}

}

Upvotes: 0

Piyush
Piyush

Reputation: 18933

you can simple use this:

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {

        String mydata= datalist.get(arg2).toString();
        // pass this data to your second activity
        Intent n = new Intent(YourActivityName.this ,SecondActivity.class);
        n.putExtra("key", mydata);
        startActivity(intent);
    }

Now retrieve in your SecondActivity on oncreate() method:

Intent n= getIntent();
String data = intent.getStringExtras("key");

Upvotes: 1

Rushabh Patel
Rushabh Patel

Reputation: 3080

I think you are trying to achieve like this..

String DATA;
@Override
public void onItemClick(AdapterView<?> arg0, View view, int pos,
            long arg3) {
    DATA= YOUR_LIST.getItemAtPosition(pos).toString();
    Intent intent = new Intent(getApplicationContext(),SECOND_ACTIVITY.class);
    intent.putExtra("DATA",DATA);
    startActivity(intent);
}

Hope it will help you..!!

Upvotes: 0

Looking Forward
Looking Forward

Reputation: 3585

String yourdata;
@Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

            yourdata= list1.getItemAtPosition(arg2).toString();
            // pass this data to your second activity

        }

Upvotes: 0

Related Questions