Reputation: 291
newbie question here. so im trying to pass title from 1stPage listview to 2ndPage EditText which means if i click on Title1 on 1stPage, 2ndPage editText will display Title1 also. ive learnt about putting extra in intent but i do not know how to take data from listview. tqvm in advanced.
1.MainActivity.java
public class MainActivity extends AppCompatActivity{
ListView l1;
String[] t1={"TITLE 1","TITLE 2"};
String[] d1={"Detail 1","Detail 2"};
String[] s1={"Content 1", "Content 2"};
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.title);
l1=(ListView)findViewById(R.id.list);
l1.setAdapter(new dataListAdapter(t1, d1, s1));
}
class dataListAdapter extends BaseAdapter {
String[] Title, Detail, Content;
dataListAdapter() {
Title = null;
Detail = null;
Content=null;
}
public dataListAdapter(String[] text, String[] text1, String[] text3) {
Title = text;
Detail = text1;
Content = text3;
}
public int getCount() {
// TODO Auto-generated method stub
return Title.length;
}
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row;
row = inflater.inflate(R.layout.custom, parent, false);
final TextView title, detail, detail2;
title = (TextView) row.findViewById(R.id.title);
detail = (TextView) row.findViewById(R.id.detail);
detail2 = (TextView) row.findViewById(R.id.detail2);
title.setText(Title[position]);
detail.setText(Detail[position]);
detail2.setText(Content[position]);
l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selected = title.getText().toString();
Intent i = new Intent(getApplicationContext(), Main2Activity.class);
i.putExtra("name", selected);
startActivity(i);
}
});
return (row);
}
}
}
2.Main2Activity.java
public class Main2Activity extends AppCompatActivity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
editText = (EditText)findViewById(R.id.et);
Intent in = getIntent();
String name = in.getStringExtra(("name"));
editText.setText(name);
}
}
Upvotes: 0
Views: 1220
Reputation: 5940
You should declare this method in MainActivity
after the lines
l1=(ListView)findViewById(R.id.list);
l1.setAdapter(new dataListAdapter(t1, d1, s1));
l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selected = t1[position];
Intent i = new Intent(getApplicationContext(), Main2Activity.class);
i.putExtra("name", selected);
startActivity(i);
}
});
and remove from dataListAdapter
class
in another activity, get the title using following method
Bundle extras = getIntent().getExtras();
String name = extras.getString("name");
editText.setText(name);
Hope it'll work.
Upvotes: 1
Reputation: 1105
In first activity you should put extra argument to intent like this. It's also good to store "argument" String in MainActivity as constant and always refer to it in other places.
public static final String ARG_FROM_MAIN = "argument";
// I assume B.class is your second ativity
Intent intent = new Intent(MainActivity.this, B.class);
intent.putExtra("argument", "Title1");
startActivity(intent);
Then in B activity you retrieve argument like this:
String passedArg = getIntent().getExtras().getString("argument");
enteredValue.setText(passedArg);
Upvotes: 0