我有一个LinearLayout
(listed_venue_item.xml),我用于ListView
中的行。我想使用相同的LinearLayout
作为我MapView
的叠加层。
要在我的MapView上显示listed_venue_item.xml,我在与MapView相同的布局中使用include
,它可以正常工作:
<include
android:id="@+id/mapVenueItemLayout"
layout="@layout/listed_venue_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
/>
但是现在,为了填充所包含布局中的内部视图,我有一些重复的代码:VenueArrayAdapter
中的第一个扩展ArrayAdapter
,第二个我的课程延伸MapActivity
。
所以我想知道在哪里放置填充venue_layout的代码。
我最好的猜测是在我的Venue
课程中,该课程包含一个场地的单个实例:
public class Venue {
public int venue_id;
public String name;
public String image_code;
// snipped several fields for brevity
public String toString() {
return "venue: " + name;
}
public static class VenueRowHolder {
ImageView logo_image=null;
TextView name=null;
String logo_code;
int id;
VenueRowHolder(View base) {
this.logo_image=(ImageView)base.findViewById(R.id.venueLogo);
this.name=(TextView)base.findViewById(R.id.venueName);
}
}
}
我应该把代码放在哪里?在Venue
内?在Venue.VenueRowHolder
内?完全在其他地方?
答案 0 :(得分:0)
尝试创建一个类,其中包含场地列表并将自身置于ListView中。
答案 1 :(得分:0)
我把它放在我的VenueRowHolder
:
public class VenueRowHolder {
public ImageView logo_image=null;
public TextView name=null;
public TextView address=null;
public String logo_code;
public int id;
public VenueRowHolder(View base) {
this.logo_image=(ImageView)base.findViewById(R.id.venueLogo);
this.name=(TextView)base.findViewById(R.id.venueName);
this.address=(TextView)base.findViewById(R.id.address);
}
public void loadVenue(Venue _venue) {
loadVenue(_venue,false);
}
public void loadVenue(Venue _venue, boolean load_image_now) {
String url = "";
if(load_image_now) {
url = _venue.logo_code + ".png";
}
BitmapManager.B.loadBitmap(url, logo_image, ImageWidth(), ImageHeight());
id = _venue.venue_id;
logo_code = _venue.logo_code;
name.setText(_venue.name);
address.setText(_venue.address);
}
}
然后当我需要将一个场地加载到View中时,我会这样做:
View _venue = findViewById(R.id.listed_venue_item);
VenueRowHolder holder = (VenueRowHolder)_venue.getTag();
if(holder == null) {
holder = new VenueRowHolder(_venue);
_venue.setTag(holder);
}
holder.loadVenue(_venue);