Reputation: 33
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
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
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
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