mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-04 18:29:23 +02:00
view reuse in adapter.getView()
This commit is contained in:
parent
0765f63ad3
commit
3fd8f4ebc8
1 changed files with 25 additions and 19 deletions
|
@ -79,7 +79,7 @@ public class AllCatalogsActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
final ListView selectedList = (ListView)findViewById(R.id.selectedList);
|
final ListView selectedList = (ListView)findViewById(R.id.selectedList);
|
||||||
selectedList.setAdapter(new CatalogsListAdapter(R.layout.checkbox_item));
|
selectedList.setAdapter(new CatalogsListAdapter());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getLabelByKey(String keyName) {
|
private String getLabelByKey(String keyName) {
|
||||||
|
@ -153,42 +153,48 @@ public class AllCatalogsActivity extends Activity {
|
||||||
private class CatalogsListAdapter extends ArrayAdapter<Item> {
|
private class CatalogsListAdapter extends ArrayAdapter<Item> {
|
||||||
private CoverManager myCoverManager;
|
private CoverManager myCoverManager;
|
||||||
|
|
||||||
public CatalogsListAdapter(int textViewResourceId) {
|
public CatalogsListAdapter() {
|
||||||
super(AllCatalogsActivity.this, textViewResourceId, myAllItems);
|
super(AllCatalogsActivity.this, R.layout.checkbox_item, myAllItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View getView(int position, View convertView, final ViewGroup parent) {
|
public View getView(int position, View convertView, final ViewGroup parent) {
|
||||||
View v = convertView;
|
|
||||||
final Item item = getItem(position);
|
final Item item = getItem(position);
|
||||||
|
|
||||||
if (item instanceof SectionItem) {
|
final View view;
|
||||||
v = LayoutInflater.from(getContext()).inflate(R.layout.checkbox_section, null);
|
if (convertView != null && item.getClass().equals(convertView.getTag())) {
|
||||||
TextView tt = (TextView)v.findViewById(R.id.title);
|
view = convertView;
|
||||||
if (tt != null) {
|
} else {
|
||||||
tt.setText(((SectionItem)item).Title);
|
view = LayoutInflater.from(getContext()).inflate(
|
||||||
|
item instanceof SectionItem
|
||||||
|
? R.layout.checkbox_section : R.layout.checkbox_item,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
view.setTag(item.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item instanceof SectionItem) {
|
||||||
|
((TextView)view.findViewById(R.id.title)).setText(((SectionItem)item).Title);
|
||||||
} else /* if (item instanceof CatalogItem) */ {
|
} else /* if (item instanceof CatalogItem) */ {
|
||||||
final CatalogItem catalogItem = (CatalogItem)item;
|
final CatalogItem catalogItem = (CatalogItem)item;
|
||||||
|
|
||||||
if (myCoverManager == null) {
|
if (myCoverManager == null) {
|
||||||
v.measure(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
view.measure(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
final int coverHeight = v.getMeasuredHeight();
|
final int coverHeight = view.getMeasuredHeight();
|
||||||
myCoverManager = new CoverManager(AllCatalogsActivity.this, coverHeight * 15 / 12, coverHeight);
|
myCoverManager = new CoverManager(AllCatalogsActivity.this, coverHeight * 15 / 12, coverHeight);
|
||||||
v.requestLayout();
|
view.requestLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
v = LayoutInflater.from(getContext()).inflate(R.layout.checkbox_item, null);
|
|
||||||
|
|
||||||
final INetworkLink link = catalogItem.Tree.getLink();
|
final INetworkLink link = catalogItem.Tree.getLink();
|
||||||
((TextView)v.findViewById(R.id.title)).setText(link.getTitle());
|
((TextView)view.findViewById(R.id.title)).setText(link.getTitle());
|
||||||
((TextView)v.findViewById(R.id.subtitle)).setText(link.getSummary());
|
((TextView)view.findViewById(R.id.subtitle)).setText(link.getSummary());
|
||||||
|
|
||||||
final ImageView coverView = (ImageView)v.findViewById(R.id.icon);
|
final ImageView coverView = (ImageView)view.findViewById(R.id.icon);
|
||||||
if (!myCoverManager.trySetCoverImage(coverView, catalogItem.Tree)) {
|
if (!myCoverManager.trySetCoverImage(coverView, catalogItem.Tree)) {
|
||||||
coverView.setImageResource(R.drawable.ic_list_library_books);
|
coverView.setImageResource(R.drawable.ic_list_library_books);
|
||||||
}
|
}
|
||||||
|
|
||||||
final CheckBox checkBox = (CheckBox)v.findViewById(R.id.check_item);
|
final CheckBox checkBox = (CheckBox)view.findViewById(R.id.check_item);
|
||||||
checkBox.setChecked(catalogItem.IsChecked);
|
checkBox.setChecked(catalogItem.IsChecked);
|
||||||
checkBox.setOnClickListener(new View.OnClickListener() {
|
checkBox.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -197,7 +203,7 @@ public class AllCatalogsActivity extends Activity {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return v;
|
return view;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue