2016-10-22 35 views
1

我已經用Java編寫了簡單的代碼,現在我正在學習Android並嘗試轉換我的代碼。Android Java對象列表與圖片

我想要做的是用圖像製作物體。 有成千上萬的對象(分爲不同的類,如「盒子」「汽車」「主」等) 我想添加每個對象圖像,所以我可以稍後使用它,例如。 BMW_e30.Image();

我會嘗試顯示我的所有代碼可讀性和可理解性,如果不是請評論並告訴我如何改進我的代碼。

首先,我會告訴你我的代碼如何在簡單的Java運行時(所有的Java代碼工作,但它是凌亂,很難理解)


BoxesHolder.class(對象列表)

public class BoxesHolder { 

    public Integer boxes[] = new Integer[20]; 

    public BoxesHolder(){ 

     MakeBoxes(); 
     } 


    public void BoxesMaker(int k, int a1, int k1, int a2){ 

     boxes[a1] = k; 
     boxes[a2] = k1; 
    } 

    public void MakeBoxes(){ 

     int i =0; int j =1; 
     BoxesMaker(10, i, 0, j); // Boxes Level 1 
     i +=2; j +=2; 
     BoxesMaker(20, i, 0, j); // Boxes Level 2 
     i +=2; j +=2; 
     BoxesMaker(30, i, 0, j); // Boxes Level 3 
     i +=2; j +=2; 
     BoxesMaker(40, i, 0, j); // Boxes Level 4 
     i +=2; j +=2; 
     BoxesMaker(50, i, 0, j); // Boxes Level 5 
     i +=2; j +=2; 
     BoxesMaker(60, i, 0, j); // Boxes Level 6 
     i +=2; j +=2; 
     BoxesMaker(70, i, 0, j); // Boxes Level 7 
     i +=2; j +=2; 
     BoxesMaker(80, i, 0, j); // Boxes Level 8 
     i +=2; j +=2; 
     BoxesMaker(90, i, 0, j); // Boxes Level 9 
     i +=2; j +=2; 
     BoxesMaker(100, i, 0, j); // Boxes Level 10 
     i +=2; j +=2; 
    } 
} 

ImagesHolder.class

public class ImagesHolder { 

     URL BoxLv1_2Icon = ImagesHolder.class.getResource("/BoxLv1_2.png"); 
     URL BoxLv3_4Icon = ImagesHolder.class.getResource("/BoxLv3_4.png"); 
     URL BoxLv5_6Icon = ImagesHolder.class.getResource("/BoxLv5_6.png"); 
     URL BoxLv7_8Icon = ImagesHolder.class.getResource("/BoxLv7_8.png"); 
     URL BoxLv9_10Icon = ImagesHolder.class.getResource("/BoxLv9_10.png"); 
    } 

標籤在JPanel中顯示圖片:

Labels.BoxesLVL1Label.setIcon(new ImageIcon(ImagesHolder.BoxLv1_2Icon)); 
Labels.BoxesLVL2Label.setIcon(new ImageIcon(ImagesHolder.BoxLv1_2Icon)); 
Labels.BoxesLVL3Label.setIcon(new ImageIcon(ImagesHolder.BoxLv3_4Icon)); 
Labels.BoxesLVL4Label.setIcon(new ImageIcon(ImagesHolder.BoxLv3_4Icon)); 
Labels.BoxesLVL5Label.setIcon(new ImageIcon(ImagesHolder.BoxLv5_6Icon)); 
Labels.BoxesLVL6Label.setIcon(new ImageIcon(ImagesHolder.BoxLv5_6Icon)); 
Labels.BoxesLVL7Label.setIcon(new ImageIcon(ImagesHolder.BoxLv7_8Icon)); 
Labels.BoxesLVL8Label.setIcon(new ImageIcon(ImagesHolder.BoxLv7_8Icon)); 
Labels.BoxesLVL9Label.setIcon(new ImageIcon(ImagesHolder.BoxLv9_10Icon)); 
Labels.BoxesLVL10Label.setIcon(new ImageIcon(ImagesHolder.BoxLv9_10Icon)); 

OnButtonClick(功能添加新的框)

​​

線添加值(計數):

Box.boxes[1] = Box.boxes[1] + 1; 

Box.boxes[3] = Box.boxes[3] + 1; 

用於顯示圖像的線條:

JOptionPane.showMessageDialog (null, "You have gained 1 LVL box!", "Congralations", JOptionPane.INFORMATION_MESSAGE, new ImageIcon(ImagesHolder.BoxLv1_2Icon));} 

現在我嘗試Android Studio中做


BoxHolder.class

package com.crelix.crelix; 

public class BoxHolder { 

    int id; 
    String name; 
    int level; 
    int price; 
    int sellprice; 
    int count; 

    public void id(int id) { 

    } 

    public BoxHolder(String name) { 

    } 

    public void level(int level) { 

    } 

    public void price(int price) { 

    } 

    public void sellprice(int sellprice) { 

    } 

    public void count(int count) { 

    } 


     public static void main(String args[]) { 

      BoxHolder AccessoriesBoxOne = new BoxHolder("Accessories Pack LV-1"); 
      BoxHolder AccessoriesBoxTwo = new BoxHolder("Accessories Pack LV-2"); 
      BoxHolder AccessoriesBoxThree = new BoxHolder("Accessories Pack LV-3"); 
      BoxHolder AccessoriesBoxFour = new BoxHolder("Accessories Pack LV-4"); 
      BoxHolder AccessoriesBoxFive = new BoxHolder("Accessories Pack LV-5"); 
      BoxHolder AccessoriesBoxSix = new BoxHolder("Accessories Pack LV-6"); 
      BoxHolder AccessoriesBoxSeven = new BoxHolder("Accessories Pack LV-7"); 
      BoxHolder AccessoriesBoxEight = new BoxHolder("Accessories Pack LV-8"); 
      BoxHolder AccessoriesBoxNine = new BoxHolder("Accessories Pack LV-9"); 
      BoxHolder AccessoriesBoxTen = new BoxHolder("Accessories Pack LV-10"); 

AccessoriesBoxOne.id(1); 
      AccessoriesBoxOne.level(1); 
      AccessoriesBoxOne.price(10); 
      AccessoriesBoxOne.sellprice(5); 
      AccessoriesBoxOne.count(0); 

      AccessoriesBoxTwo.id(2); 
      AccessoriesBoxTwo.level(2); 
      AccessoriesBoxTwo.price(20); 
      AccessoriesBoxTwo.sellprice(10); 
      AccessoriesBoxTwo.count(0); 

      AccessoriesBoxThree.id(3); 
      AccessoriesBoxThree.level(3); 
      AccessoriesBoxThree.price(30); 
      AccessoriesBoxThree.sellprice(15); 
      AccessoriesBoxThree.count(0); 

      AccessoriesBoxFour.id(4); 
      AccessoriesBoxFour.level(4); 
      AccessoriesBoxFour.price(40); 
      AccessoriesBoxFour.sellprice(20); 
      AccessoriesBoxFour.count(0); 

      AccessoriesBoxFive.id(5); 
      AccessoriesBoxFive.level(5); 
      AccessoriesBoxFive.price(50); 
      AccessoriesBoxFive.sellprice(25); 
      AccessoriesBoxFive.count(0); 

      AccessoriesBoxSix.id(6); 
      AccessoriesBoxSix.level(6); 
      AccessoriesBoxSix.price(60); 
      AccessoriesBoxSix.sellprice(30); 
      AccessoriesBoxSix.count(0); 

      AccessoriesBoxSeven.id(7); 
      AccessoriesBoxSeven.level(7); 
      AccessoriesBoxSeven.price(70); 
      AccessoriesBoxSeven.sellprice(35); 
      AccessoriesBoxSeven.count(0); 

      AccessoriesBoxEight.id(8); 
      AccessoriesBoxEight.level(8); 
      AccessoriesBoxEight.price(80); 
      AccessoriesBoxEight.sellprice(40); 
      AccessoriesBoxEight.count(0); 

      AccessoriesBoxNine.id(9); 
      AccessoriesBoxNine.level(9); 
      AccessoriesBoxNine.price(90); 
      AccessoriesBoxNine.sellprice(45); 
      AccessoriesBoxNine.count(0); 

      AccessoriesBoxTen.id(10); 
      AccessoriesBoxTen.level(10); 
      AccessoriesBoxTen.price(100); 
      AccessoriesBoxTen.sellprice(50); 
      AccessoriesBoxTen.count(0); 

我要添加相似圖片AccessoriesBoxOne.Image (的ImageUrl);我怎樣才能做到這一點?

我現在怎樣訪問對象?無法理解becouse這些行不會再工作:

Box.boxes[1] = Box.boxes[1] + 1; 

而且我在想,我會做這樣:

Box.AccessoriesBoxOne.count = +1; 

但它不工作。

我希望你能理解我想要說的並試圖去做,希望是Crelix。

+0

其中僅通過許多不同意味着你應該使用數組變量名或名單。請查找關於這些基本編程概念的教程。 –

+0

此外,這是不是一個Android問題,因爲你正在使用JPanel。 –

+0

@代碼學徒我沒有使用新代碼的JPanel(代碼波紋管),JPanel的代碼是從簡單的Java代碼在Eclipse – crelix12345

回答

2

所以,這段代碼質量很差,很難理解。

  1. 閱讀關於幹,循環,數組和集合。
  2. 您還應該使用命名約定。
  3. 使用有意義的名稱:k, k1, a, a2 - 這是什麼意思?
  4. 使用私人領域和getter/setter。

如果可以,使用原始的int陣列,代替Integer數組:

int[] boxes = new int[20];然後Box.boxes[1]++(增量)

+0

謝謝,但如果我的理解沒錯,這些點是關於「簡單的Java代碼」(我不會再與它的工作),我需要知道如何在Android的代碼(在話題上市婁)遞增。 – crelix12345

+0

我怎麼說Box.boxes [1] = Box.boxes [1] + 1。在簡單的Java中工作,我只是不想使用該代碼。 – crelix12345

+0

你是否試圖在Android中使用BoxHolder(在你的問題中的最後一個代碼)? – Hobbajt