2017-02-24 158 views
0

我有一個我正在處理的小應用程序,它顯示了一個怪物列表。你可以點擊每個怪物來查看關於那個怪物的更多信息。將數據從一個活動動態添加到另一個活動

該列表位於我的xml佈局文件中的TableLayout中。

但是看着代碼,很容易看到事物如何失控,我添加的怪物越多。

我想知道,如果有更好的方法來確定哪個怪物被點擊以及如何獲得從怪物視圖列表傳遞到怪物信息視圖所需的信息。

這是我的代碼到目前爲止。它工作正常,但我知道這不是很好,因爲我必須爲每個添加到列表中的新怪物添加一個新的case語句。

public void AddNewView(View view) { 
     //get selected button view 
     switch(view.getId()) 
     { 
      //get textview & imageview monsters from xml 
      //get monster picture and monster info from xml 
      case R.id.showMonsterButton1: 
       iv = (ImageView) findViewById(R.id.monster1_icon); 
       tv = (TextView) findViewById(R.id.monster1_info); 
       ShowMonsterInfoView(tv, iv); 
       break; 

      case R.id.showMonsterButton2: 
       iv = (ImageView) findViewById(R.id.monster2_icon); 
       tv = (TextView) findViewById(R.id.monster2_info); 
       ShowMonsterInfoView(tv, iv); 
       break; 

      case R.id.showMonsterButton3: 
       iv = (ImageView) findViewById(R.id.monster3_icon); 
       tv = (TextView) findViewById(R.id.monster3_info); 
       ShowMonsterInfoView(tv, iv); 
       break; 

      case R.id.showMonsterButton4: 
       iv = (ImageView) findViewById(R.id.monster4_icon); 
       tv = (TextView) findViewById(R.id.monster4_info); 
       ShowMonsterInfoView(tv, iv); 
       break; 
     } 
    } 

    public void ShowMonsterInfoView(TextView tv, ImageView iv) { 
     Intent intent = new Intent(this, DisplayMonsterInfo.class); 
     String text_tag = tv.getTag().toString(); 
     String image_tag = iv.getTag().toString(); 
     Bundle extras = new Bundle(); 
     extras.putString("name", text_tag); 
     extras.putString("avatar", image_tag); 
     intent.putExtras(extras); 
     startActivity(intent); 

    } 
+0

謝謝你讓我知道我離開了那些信息。我編輯了原始問題以包含它。怪物列表位於TableLayout中的XML文件中。 – SkyeBoniwell

回答

1

將您的怪物列表保存在List對象中,並將其傳入ArrayAdapter對象中,該對象將用於填充ListView。在List對象中,您可以使用obj.add(monster_name)動態地添加更多怪物。在setOnItemSelected方法中將所選怪物保存在靜態字符串對象中,該對象可以在任何使用MonsterListActivity.monster_name的活動中訪問。用它從文件/數據庫中提取數據。

+0

我有我的xml佈局文件中的所有怪物在 ......每個怪物都在自己的。這與List類似嗎? – SkyeBoniwell

+0

你有哪些怪物的細節?不是你想展示他們的地方,但你從哪裏得到它?你把它全部寫在一個文件或什麼東西? –

+0

我剛剛在我的xml佈局文件中包含了所有內容。 – SkyeBoniwell

1

按照如何得到哪個怪物被點擊。如果您使用的是RecyclerView,並且如果ListView只是setOnItemClickListener。通過點擊物品的位置,您可以從怪物對象列表中獲得對象,然後從那裏獲得id

在數據庫中放入關於怪物的數據,並將怪物的ID傳遞給您將從數據庫中獲取數據的另一活動。

+0

你的意思是這樣嗎? https://www.mkyong.com/android/android-listview-example/ – SkyeBoniwell

1

你可以做的只是將數據保存到數據庫,併爲每個怪物分配一個唯一的ID。點擊你將ID傳遞給下一個活動,並獲取有關怪物的數據。另一方面,如果您不想保存數據,請將點擊意圖數據傳遞給其他活動(即,如果您在第一個活動中有數據)。

由於您必須添加視圖,因此我建議您使用recycler視圖,您可以在該列表中簡單添加項目並調用notifyDataSetChanged()。使用表格佈局可能不是一個好主意。

相關問題