2014-09-20 33 views
2

我需要基於條件來改變ImageView的單ImageView的,問題是,尺寸的ImageView只能通過ImageView.getLayoutParameters被改變()。寬度/高度,這樣做會改變每個的寬度ListView中的項目。調整內部的ListView

是否有改變單一的ImageView大小的方法嗎?至於現在我找不到辦法。

+0

您的佈局參數嘗試過嗎? – 2014-09-20 16:09:05

+0

我做過了,在我的文章中提到它 – Yehonatan 2014-09-20 16:53:12

+0

您是否找到解決此問題的解決方案? – androidevil 2015-04-10 19:54:08

回答

0

你必須寫,如果其他條件

if(yourcondtion) 
{ 
setlayoutparams(); 
} 

else 
{ 
setoriginallayoutparams(); 
} 
+1

正如我所說。更改layoutparams將更改每個項目的參數,因爲ListView項目是從單個XML文件填充的 – Yehonatan 2014-09-20 16:17:15

1

這裏是我的自定義適配器。我可以通過將參數設置爲imageView來重新調整圖像大小。希望對你有幫助!

P.S最糟糕的是,通過這種方式,你必須創建每次您的看法!這比使用viewHolder更慢。

public class Adapter extends BaseAdapter { 

ArrayList<String> list = new ArrayList<String>(); 
Activity activity; 

public Adapter(Activity activity) { 
    this.activity = activity; 
    list.add("Item 1"); 
    list.add("Item 2"); 
    list.add("Item 3"); 
    list.add("Item 4"); 
    list.add("Item 5"); 
    list.add("Item 6"); 
} 

@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int i) { 
    return list.get(i); 
} 

@Override 
public long getItemId(int i) { 
    return 0; 
} 

@Override 
public View getView(int i, View convertView, ViewGroup viewGroup) { 


    LayoutInflater inflater = activity.getLayoutInflater(); 
    convertView = inflater.inflate(R.layout.adapter,null); 

    ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView); 
    TextView textView = (TextView) convertView.findViewById(R.id.textView); 


    textView.setText(list.get(i)); 
    //Condition 
    if (i == 5) 
    { 
     setLayoutParams(imageView,40,40); 
    } 
    else { 
     setLayoutParams(imageView,70,70); 
    } 

    imageView.setImageDrawable(activity.getResources().getDrawable(R.drawable.ic_launcher)); 
    return convertView; 
} 



private View setLayoutParams(View view, int width, int height) 
{ 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width,height); 
    view.setLayoutParams(params); 
    return view; 
} 
} 
+0

這不是我所要求的。我說每個ListView項目。這改變了整個佈局。 – Yehonatan 2014-09-20 18:27:10

+0

確定不是改變此 '如果(條件) { 返回的setLayout(convertView,寬度,高度); }否則{ 返回的setLayout(convertView,寬度,高度); }' 並將其更改爲setLayoutParams: 'AbsListView.LayoutParams params = new AbsListView.LayoutParams(width,height);' – ArbenMaloku 2014-09-20 18:34:18