2012-01-12 37 views
0

IndexGainers,Losers是3 buttons。 在每個button點擊,listView獲取填充相應的數據。基於getView()方法中的數據設置圖像

第3列%Chg可以是陰性陽性

基於%Chg值的值,對應arrow應該顯示在imageView放置後%Chg列值即向上箭頭正值向下箭頭負值 ...

在任何button點擊,我將%Chg列的值傳遞給名爲updown的數組中的列Adapter

基於該值,Adapter應該設置從適配器類(getView()方法)的down arrowup arrow

代碼段

public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     LayoutInflater inflater = activity.getLayoutInflater(); 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.list_table, null); 
      holder = new ViewHolder(); 

      holder.txtFirst = (TextView) convertView 
        .findViewById(R.id.FirstText); 
      holder.txtSecond = (TextView) convertView 
        .findViewById(R.id.SecondText); 
      holder.txtThird = (TextView) convertView 
        .findViewById(R.id.ThirdText); 
      holder.ivarrow = (ImageView) convertView.findViewById(R.id.ivarrow); 
      holder.l1 = (LinearLayout) convertView 
        .findViewById(R.id.tableLayout); 

      convertView.setTag(holder); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     HashMap<String, String> map = list.get(position); 
//Setting the row background 
     if (count % 2 == 0) { 
      try { 
       InputStream is1 = ctx.getAssets().open("cellbg.png"); 
       Drawable d1 = Drawable.createFromStream(is1, "cellbg"); 
       holder.l1.setBackgroundDrawable(d1); 

      } catch (Exception e) { 
       throw new Error(" exception in TableListAdapter " 
         + e.getMessage()); 
      } 
     } else { 
      try { 
       InputStream is2 = ctx.getAssets().open("cellbg1.png"); 
       Drawable d2 = Drawable.createFromStream(is2, "cellbg1"); 
       holder.l1.setBackgroundDrawable(d2); 
      } catch (Exception e) { 
       throw new Error(" exception in TableListAdapter " 
         + e.getMessage()); 
      } 
     } 
     count++; 
//setting the arrow 
     if (i < updown.length) { 
      if (updown[i] > 0) { 
       holder.ivarrow.setImageResource(R.drawable.up); 
       Log.v("up", "up"); 
      } else { 
       holder.ivarrow.setImageResource(R.drawable.down); 
       Log.v("down", "down"); 
      } 
      Log.v("i=", i + " ,updown=" + updown[i]); 
      i++; 
     } 

     holder.txtFirst.setText(map.get(FIRST_COLUMN)); 
     holder.txtSecond.setText(map.get(SECOND_COLUMN)); 
     holder.txtThird.setText(map.get(THIRD_COLUMN)); 
     return convertView; 
    } 

日誌顯示正確的數據,但是箭頭只顯示在第一行。即,如果列表的最後一個值是positive,它顯示up arrow到第一行,如果列表的最後一個值是negative,它顯示down arrow到第一排......

如何顯示箭頭對應每行?

我是android開發新手。所以任何幫助將是生命保護!

screen

+0

發表您的全getview方法 – ingsaurabh 2012-01-12 07:08:00

+0

做......... ...... – GAMA 2012-01-12 07:13:01

回答

3
if (i < updown.length) { 
     if (updown[i] > 0) 
      holder.ivarrow.setImageResource(R.drawable.up); 
     else 
      holder.ivarrow.setImageResource(R.drawable.down); 
     Log.v("i=", i + " ,updown=" + updown[i]); 
     i++; 
    } 

替換爲您的代碼:

if (updown[position] > 0) 
      holder.ivarrow.setImageResource(R.drawable.up); 
     else 
      holder.ivarrow.setImageResource(R.drawable.down); 

而且我認爲你的作品

+0

非常感謝...它的魅力! – GAMA 2012-01-12 07:21:42