2012-05-16 127 views
0

我有一個ListView我有一些元素。每個項目有一個ListView和兩個TextBoxes。這裏是我的問題:當我從列表中選擇元素時,會開始一個新活動,其中有一個ListView和兩個TextBoxes。如果我點擊ListView中的新活動中的第一個元素,將如何做到這一點將從此項目ListViewTextBoxes將從列表中TextBoxes數據。列表視圖和數據

+0

什麼問題?你不能選擇項目或從中獲取數據? – superM

+0

我無法從中獲取數據。 – edi233

回答

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

,並在您MyNewActivityonCreate方法,你都能夠檢索所傳遞的羣衆演員,並用正確的值填寫正確的領域:

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

imagesheaderstexts陣列-I想 - 包含資源ID爲要顯示圖像和字符串。他們可能通過您當前項目的渲染器的數據訪問。

+0

這是我如何存儲數據: 最終產品itemsList [] =新項[] {新項目(R.drawable.per1 「茲比格涅夫」, 「米斯塔」), \t \t \t \t新項目(R.drawable。 PER2, 「Zbigniew2」, 「Mista2」), \t \t \t \t新項目(R.drawable.per3, 「Zbigniew3」, 「Mista3」), \t \t \t \t新項目(R.drawable.per4,「Zbigniew4 」, 「Mista4」)}; 如何從一個項目的數據意圖? – edi233

+0

這更容易,那麼你只有一個列表(數組),你可以使用適當的獲取當前項目的數據來檢索必要的字段。因此,可以使用'currentItem.getImageId()'來代替使用'images [itemPosition]'。 – rekaszeru

+1

謝謝。這是很好的解決方案 – edi233

0

我會比rekaszeru有點不同(至少在檢索信息時)。

在您的第一個活動中,您將使用onListItemClick並將信息放入extras包中,以便意圖啓動第二個活動。在這種方法中,您使用傳入的視圖來檢索信息,因此使用何種適配器並且適配器中的位置無關緊要。

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