MKADAIM
MKADAIM

Reputation: 33

Passing data on textView from click on item listView

I want to call setText on the TextView in the new activity every time I click on any text at the list view. For example, if I click on an item in the listView containing "Android" I want the word "for Mobile" to appear in the new activity on text view.

Find code below :

Main Activity code :

MainActivity.java

package com.example.listui;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
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 MainActivity extends Activity {
TextView txtView;
ListView listview;
String [] myStringArray = {"JAVA","Android","php","jQuery","JAVAScript","Paython"};
String [] info = {"for Desktop","for Mobile","for Web","for Web to improve interFace","like jQuery","For desktop"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtView = (TextView) findViewById(R.id.txtVo);
    listview = (ListView) findViewById(R.id.listView1);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>       (this,android.R.layout.simple_list_item_1,myStringArray);
    listview.setAdapter(adapter);
    listview.setOnItemClickListener(new OnItemClickListener() {         
        @Override
        public void onItemClick(AdapterView<?> MainActivity, View view,
                int position, long id) {             
                Intent i = new Intent(getApplication(),TxtMainActivity.class);
                startActivity(i);
            txtView.setText(info[3]);                   
            }               
        }
    );
    }
}

Text view activity code : TxtMainActivity.java

package com.example.listui;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class TxtMainActivity extends ActionBarActivity {

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


}

Text View code : activity_txt_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.listui.TxtMainActivity" >

<TextView
    android:id="@+id/txtVo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    android:onClick="setV" />

Activity Main code: activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.listui.MainActivity" >

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

</ListView>

Upvotes: 0

Views: 3968

Answers (5)

Jatin
Jatin

Reputation: 1670

Use this:

txtView.setText(info[position]);

Upvotes: 0

Piyush
Piyush

Reputation: 18923

Use this

txtView.setText(info[position]);

instead of this

txtView.setText(info[3]);

And if you want to pass to next activity then use putExtra for Intent.

 Intent i = new Intent(MainActivity.this,TxtMainActivity.class);
 i.putExtra("key",info[position]);
 startActivity(i);

and get in your new activity as

 String key = getIntent().getExtra("key");

Upvotes: 3

Sagar Pilkhwal
Sagar Pilkhwal

Reputation: 3993

Use putExtra() and getExtra()

@Override
public void onItemClick(AdapterView<?> MainActivity, View view,
        int position, long id) {
Intent i = new Intent(getApplication(),TxtMainActivity.class);
i.putExtra("My_TextView_Data", info[position]);
startActivity(i);
}




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_txt_main);
    String txtViewData;
    if (savedInstanceState == null) {
        extras = getIntent().getExtras();
        if(extras == null) {
            txtViewData= null;
        } else {
            txtViewData= extras.getString("My_TextView_Data");
        }
    }
    else
    {
        txtViewData= (String) savedInstanceState.getSerializable("My_TextView_Data");
    }
    txtView.setText(txtViewData);
}

Upvotes: 0

Asha Soman
Asha Soman

Reputation: 1856

Pass the information as intent extra

listview.setOnItemClickListener(new OnItemClickListener() {



        @Override
        public void onItemClick(AdapterView<?> MainActivity, View view,
                int position, long id) {


                Intent i = new Intent(getApplication(),TxtMainActivity.class);
                i.putExtra("info",info[position]);
                startActivity(i);

            }

        }
    );

Inside OnCreate() of TxtMainActivity

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_txt_main);
    String info = getIntent().getExtra("info");
    ((TextView)findViewById(R.id.txtVo)).setText(info);

}

Upvotes: 0

Ankit Kumar
Ankit Kumar

Reputation: 3723

use

   txtView.setText(info[position]);

Upvotes: 0

Related Questions