2012-04-21 32 views
-2

在我的應用程序中,我將所有圖像和名稱從MySQL服務器數據庫提取到Android手機。如果仿真器屏幕是HVGA,則只顯示五個圖像和名稱。如何在不滾動Android的情況下獲取cutom listview中的所有項目名稱

LogCat也只有五個名字越來越打印。當我滾動屏幕時,我可以在屏幕上看到多少名字,只有很多名字正在打印?相反,所有的名字必須在滾動前打印。

這是我的代碼:

public class VegdishesListview extends BaseAdapter { 
    String qrimage; 
    Bitmap bmp, resizedbitmap; 
    Bitmap[] bmps; 
    Activity activity = null; 
    private LayoutInflater inflater; 

    private ImageView[] mImages; 
    String[] itemimage; 
    TextView[] tv; 
    String itemname,price,desc; 
    String[] itemnames; 
    String[] prices; 
    String[] descs; 
    HashMap<String, String> map = new HashMap<String, String>(); 

    public VegdishesListview(Context context, JSONArray imageArrayJson) { 
     //inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     // imageLoader=new ImageLoader(activity); 
     inflater=LayoutInflater.from(context); 
     this.mImages = new ImageView[imageArrayJson.length()]; 
     this.bmps = new Bitmap[imageArrayJson.length()]; 
     this.itemnames = new String[imageArrayJson.length()]; 
     this.prices=new String[imageArrayJson.length()]; 
     this.descs=new String[imageArrayJson.length()]; 
     try { 
      for (int i = 0; i < imageArrayJson.length(); i++) { 
       JSONObject image = imageArrayJson.getJSONObject(i); 
       qrimage = image.getString("itemimage"); 
       itemname = image.getString("itemname"); 
       price=image.getString("price"); 
       desc=image.getString("itemdesc"); 

       itemnames[i] = itemname; 
       prices[i]=price; 
       descs[i]=desc; 

       byte[] qrimageBytes = Base64.decode(qrimage.getBytes()); 

       bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0, 
                qrimageBytes.length); 
       int width = 100; 
       int height = 100; 
       resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, 
                  true); 
       bmps[i] = bmp; 

       mImages[i] = new ImageView(context); 
       mImages[i].setImageBitmap(resizedbitmap); 

       mImages[i].setScaleType(ImageView.ScaleType.FIT_START); 

       // tv[i].setText(itemname); 
      } 
      System.out.println(map); 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

    public int getCount() { 
     return mImages.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 

     vi = inflater.inflate(R.layout.vegdisheslistview, null); 

     TextView text=(TextView)vi.findViewById(R.id.vegdishestext); 
     ImageView image=(ImageView)vi.findViewById(R.id.vegdishesimage); 
     TextView text1=(TextView)vi.findViewById(R.id.vegdishesprice); 
     TextView text2=(TextView)vi.findViewById(R.id.vegdishesdesc); 
     image.setImageBitmap(bmps[position]); 
     text.setText(itemnames[position]); 
     text1.setText(prices[position]); 
     text2.setText(descs[position]); 
     System.out.println(itemnames[position]); 

     return vi; 
    } 
} 

在這裏我要打印所有itemNames的System.out.println(itemnames[position]);而不是滾動。

+0

做它,而不是印刷的你有完全相同的問題(除了標題中的小修改)像這樣一個http://stackoverflow.com/questions/10257812/how-to-get-all-itemnames-in-getview-method-in-side-base-adapter - 在灼熱之前。爲什麼? – Luksprog 2012-04-21 11:14:12

回答

0

方法getView只被要求顯示的項目,所以你應該在構造函數(System.out.println(map);後)年底將這樣的代碼

for(String itemname: itemnames) 
    System.out.println(itemname); 

getView

+0

System.out.println在Android中的用途是什麼。它會將消息打印到控制檯嗎? – 2012-04-21 11:03:16

相關問題