ListView显示数据的时候,应该是数据控制View的显示
每个item对应xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tradeListViewInfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/TradeItemIcon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginLeft="60dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dp"
/>
<TextView
android:id="@+id/TradeItemTitle"
android:layout_width="wrap_content"
android:layout_height="65dp"
android:textColor="@color/White"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:textSize="16dp"></TextView>
</LinearLayout>
adapter定义每个itemView的布局和数据,数据控制View的显示,如要获得每个View的position,可以在adapter类中添加position变量,并用这个变量来控制显示。
adapter类:
public class TitleListAdapter extends BaseAdapter{
ArrayList<TradeTitleAndIcon> tradeTitleAndIconList;
private Context context;
private TextView titleView;
private TextView iconView;
public TitleListAdapter(Context c, ArrayList<TradeTitleAndIcon> tradeTitleAndIconList)
{
this.tradeTitleAndIconList=tradeTitleAndIconList;
this.context = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return tradeTitleAndIconList.size();
}
@Override
public Object getItem(int i) {
// TODO Auto-generated method stub
return tradeTitleAndIconList.get(i);
}
@Override
public long getItemId(int i) {
// TODO Auto-generated method stub
return i;
}
public void setItemSelected(int position)
{
for (TradeTitleAndIcon tradeTitleAndIcon:tradeTitleAndIconList)
{
tradeTitleAndIcon.selected=false;
}
tradeTitleAndIconList.get(position).selected=true;
notifyDataSetChanged();
}
@Override
public View getView(int i, View view, ViewGroup viewgroup) {
titleView = null;
iconView=null;
if(view == null){
view = LayoutInflater.from(context).inflate(R.layout.trade_list_item_info, null);
}
titleView=(TextView)view.findViewById(R.id.TradeItemTitle);
titleView.setText(tradeTitleAndIconList.get(i).titleName);
iconView=(TextView)view.findViewById(R.id.TradeItemIcon);
if (tradeTitleAndIconList.get(i).selected)
{
titleView.setTextColor(Color.RED);
iconView.setBackgroundResource(tradeTitleAndIconList.get(i).titleIconRed);
}
else
{
titleView.setTextColor(Color.WHITE);
iconView.setBackgroundResource(tradeTitleAndIconList.get(i).titleIcon);
}
return view;
}
}
LayoutInflater.from(context).inflate(R.layout.trade_list_item_info, null);
这个方法非常重要!