0

我有一个ListView我有一些元素的地方。每个项目都有一个ListView和两个TextBoxes。这是我的问题:当我在列表中的元素上计时时,一个新的活动开始了,我有一个ListView和两个TextBoxesListView如果我单击新活动中ListView的第一个元素,我该怎么TextBoxesTextBoxes

4

2 回答 2

1

您可以在启动新 Activity 时传递extras给您使用的。Intent

假设您当前的活动是MyActivity,而您想要通过单击列表项开始的活动是MyNewActivity; 然后在您的MyActivity班级中,在列表项单击侦听器内应修改为:

Intent intent = new Intent(MyActivity.this, MyNewActivity.class);
intent.putExtra("my.picture.id", images[itemPosition]);
intent.putExtra("my.header.id", headers[itemPosition]);
intent.putExtra("my.text.id", texts[itemPosition]);
startActivity(intent);

并且在您的MyNewActivity班级onCreate方法中,您可以检索传递的附加内容,并使用正确的值填充正确的字段:

final Intent intent = getIntent();
final int pictureId = intent.getIntExtra("my.picture.id", 0);
final int headerId = intent.getIntExtra("my.header.id", 0);
final int textId = intent.getIntExtra("my.text.id", 0);

((ImageView)findViewById(R.id.my_image)).setImageResource(pictureId);
((TextView)findViewById(R.id.my_header)).setText(headerId);
((TextView)findViewById(R.id.my_text)).setImageResource(textId);

,images和数组 - 我想 - 包含您要显示的图像和字符串的资源 ID headerstexts它们可能可以通过您当前项目的渲染器的数据访问。

于 2012-05-16T12:52:01.113 回答
0

我会采取与 rekaszeru 不同的方式(至少在检索信息方面)。

在您的第一个活动中,您将使用 onListItemClick 并将信息放入要传递的附加包中,以启动第二个活动。在这种方法中,您使用传入的视图来检索信息,因此您使用什么样的适配器并不重要,适配器中的位置也不重要。

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    Intent myIntent = new Intent(FirstClass.this, SecondClass.class);
    myIntent.putExtra("ImageRef", v.findViewById(R.id.imageview)).getTag());
    myIntent.putExtra("Text1", v.findViewById(R.id.TextView1).getText().toString());
    myIntent.putExtra("Text2", v.findViewById(R.id.TextView2).getText().toString());
    FirstClass.this.startActivity(myIntent);
}

然后在第二个活动中检索要使用的信息:

private TextView NewTextView1;
private TextView NewTextView2;
private ImageViewView NewImageView;

Bundle extras = getIntent().getExtras();

NewTextView1 = (TextView)findViewBYId(R.id.newtextview1).setText(extras.getString("Text1"));
NewTextView2 = (TextView)findViewBYId(R.id.newtextview2).setText(extras.getString("Text2"));
NewImageView = (ImageView)findViewBYId(R.id.newimageview).setImageResource(extras.getInt("ImageRef"));
于 2012-05-16T13:14:31.937 回答