0

ListViewはいくつかの要素を持っているところがあります。すべてのアイテムには1つとListView2つありTextBoxesます。ここに私の質問があります:リストから要素をクロックすると、新しいアクティビティが開始されます。ここで、1つとListView2つがありTextBoxesます。新しいアクティビティの最初の要素をクリックした場合にこれを行う方法はListViewListViewこのアイテムからのものであり、リストからのTextBoxesデータになりますTextBoxes

4

2 に答える 2

1

新しいアクティビティを開始するときに使用するに渡すことができ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を使用し、情報をエクストラバンドルに入れて、2番目のアクティビティを開始する目的で渡されます。この方法では、渡されたビューを使用して情報を取得するため、使用しているアダプターの種類やアダプター内の位置は関係ありません。

@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);
}

次に、2番目のアクティビティで、使用する情報を取得します。

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 に答える