我需要将数据从一个活动传递到另一个活动中的ListView。目前我已经设置了一个TextView来查看第二个活动中的所有细节。但我需要在ListView中查看每个项目的适配器。
MainActivity.java :
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
String[] place={"Karur","Salem","Namakkal","Trichy","Madurai"};
EditText Name;
EditText Email;
EditText Number;
Button submit;
RadioGroup radioGroup;
RadioButton maleradioButton,femaleradioButton;
CheckBox BEcheckbox,MEcheckbox;
Spinner spin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spin = (Spinner)findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_spinner_item, place);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(aa);
Name = (EditText)findViewById(R.id.Name);
Email = (EditText)findViewById(R.id.Email);
Number = (EditText)findViewById(R.id.Number);
submit = (Button)findViewById(R.id.submit);
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
//// maleradioButton = (RadioButton)findViewById(R.id.maleradioButton);
femaleradioButton = (RadioButton)findViewById(R.id.femaleradioButton);
BEcheckbox = (CheckBox)findViewById(R.id.BEcheckBox);
MEcheckbox = (CheckBox)findViewById(R.id.MEcheckbox);
final RadioGroup rgroup = (RadioGroup)findViewById(R.id.radioGroup);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String spinText = spin.getSelectedItem().toString();
String name = Name.getText().toString();
String email = Email.getText().toString();
String number = Number.getText().toString();
String val="";
String radio;
if (BEcheckbox.isChecked()) {
val="BE";
} if(MEcheckbox.isChecked()) {
val="ME";
}
int select=rgroup.getCheckedRadioButtonId();
maleradioButton=(RadioButton)findViewById(select);
radio=maleradioButton.getText().toString();
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("Name",name);
intent.putExtra("Email",email);
intent.putExtra("Number",number);
intent.putExtra("Degree",val);
intent.putExtra("Gender",radio);
intent.putExtra("Place",spinText);
startActivity(intent);
}
});
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
SecondActivity.java :
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends Activity {
String Name;
String Email;
String Number;
String Degree;
String Gender;
String Place;
TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
result = (TextView)findViewById(R.id.result);
Name = getIntent().getExtras().getString("Name");
Email = getIntent().getExtras().getString("Email");
Number = getIntent().getExtras().getString("Number");
Degree = getIntent().getExtras().getString("Degree");
Gender = getIntent().getExtras().getString("Gender");
Place = getIntent().getExtras().getString("Place");
result.setText("Name:"+""+Name +'\n'+"Email"+" "+Email+'\n'+"Number:"+" "+Number+'\n'+"Degree:"+" "+Degree+'\n'+"Gender:"+" "+Gender+'\n'+"Place:"+" "+Place);
}
}
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="arun.com.project.MainActivity">
<EditText
android:id="@+id/Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/Email"
android:ems="10"
android:hint="Enter your Name"
android:inputType="textPersonName" />
<EditText
android:id="@+id/Email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Name"
android:layout_centerHorizontal="true"
android:ems="10"
android:hint="Enter your Email"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/Number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/Email"
android:layout_below="@+id/Email"
android:ems="10"
android:hint="Enter your Mobile Number"
android:inputType="phone" />
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/Number"
android:id="@+id/radioGroup">
<CheckBox
android:id="@+id/BEcheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/radioGroup"
android:layout_marginTop="74dp"
android:layout_weight="1"
android:text="BE" />
<CheckBox
android:id="@+id/MEcheckbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ME" />
<RadioButton
android:id="@+id/maleradioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Male" />
<RadioButton
android:id="@+id/femaleradioButton"
android:layout_width="442dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Female" />
</RadioGroup>
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="11dp"
android:text="SUBMIT"
android:textColor="#ffffff"
android:background="@color/colorPrimaryDark"/>
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/submit"
android:layout_alignParentStart="true"
android:layout_marginBottom="27dp" />
</RelativeLayout>
activity_second.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="arun.com.project.SecondActivity">
<TextView
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="55dp"
android:layout_marginTop="43dp"
android:text="TextView"
android:textColor="#000000"
android:textSize="16sp"/>
</RelativeLayout>
我刚刚使用单个TextView来查看我在 MainActivity.java 中输入的详细信息。但现在我需要在ListView中显示详细信息(名称,电子邮件,数字等),并在单独的适配器中显示。
答案 0 :(得分:0)
如果要在ListView行中显示许多信息。为ListView和自定义POJO类创建自定义适配器,以在单个对象中存储多个数据字段。
创建 Info.java :
class Info {
String name;
String email;
public Info(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() { return name; }
public String getEmail() { return email; }
}
创建 row.xml ,为ListView的单行制作自定义布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
android:text="Name"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email"
android:id="@+id/email"/>
</LinearLayout>
定义适配器以创建行并在行上填充数据。创建 InfoAdapter.java :
class InfoAdapter extends BaseAdapter {
Context context;
List<Info> data;
private static LayoutInflater inflater = null;
public InfoAdapter(Context context, List<Info> data) {
// TODO Auto-generated constructor stub
this.context = context;
this.data = data;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (vi == null)
vi = inflater.inflate(R.layout.row, null);
TextView name = (TextView) vi.findViewById(R.id.name);
TextView email = (TextView) vi.findViewById(R.id.email);
name.setText(data.get(position).getName());
email.setText(data.get(position).getEmail());
return vi;
}
}
将ListView放在 activity_second.xml 中,并根据需要配置布局。
<ListView
android:id="@+id/list"
android:layout_height="wrap_content"
android:layout_width="match_parent">
</ListView>
在 SecondActivity.java 里面创建一个ListView实例和数据数组:
listView = (ListView) findViewById(R.id.list);
//Getting extras (Name, Email,..)
listInfo.add(new Info(Name, Email,...); //Create Info object base on extras information
初始化适配器并设置:
InfoAdapter adapter = new InfoAdapter(this, listInfo);
listView.setAdapter(adapter);