gpt4 book ai didi

android - android中的数据绑定(bind)复杂列表

转载 作者:行者123 更新时间:2023-11-30 03:56:20 24 4
gpt4 key购买 nike

Mockup 所以我想在下面创建这个 UI。这是大学类(class),我没有多少时间了。我一切正常,但我无法全神贯注地列出事件 list 。我有一个 java 类 eventList,它用数据库中的数据填充一个列表。有什么建议么?我是否必须动态添加 2 个按钮(向上/向下)和足够的 TextView 来提供数据?如果我这样做,我将如何保持它的格式?我应该把它全部放在主页上的 ScrollView 中吗?

最佳答案

使用自定义适配器使其成为 ListView。每一行都可以设计成一个RelativeLayout,这样你就可以把你的事件名称、位置等放在那里。

适配器看起来像这样:(代码经过清理)

public class POPublicationAdapter extends ArrayAdapter<Wrap<POUserPublication>> {
private final Context context;
...
private OnClickListener faveClick;
private OnClickListener shortClick;
...

public POPublicationAdapter( Context context, List<WrapPO<POUserPublication>> values,
OnClickListener faveClick, OnClickListener shortClick, ... ) {
super(context, R.layout.row_publication, values);
this.context = context;
this.listId = listId;
this.faveClick = faveClick;
this.shortClick = shortClick;
...
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
WrapPO<POUserPublication> item = getItem(position);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = null;

if( item.item != null ){
rowView = inflater.inflate(R.layout.row_publication, parent, false);
rowView.setTag( item );
TextView tvLabel = (TextView) rowView.findViewById(R.id....);
ImageView ivPubFavorite = (ImageView) rowView.findViewById(R.id....);

TextView tvSubLabel = (TextView) rowView.findViewById(R.id.publicationSublabel);
tvLabel.setText( item.item.pub().get( PO.displayName ) );
if( !item.item.pub().existsDefault() ) {

}
if( listId == POLayer.LIST_REQUIRED )
tvSubLabel.setText(String.format("(Due on %1$TD)", item.item.asDate( PO.dueDate )));
else if( listId == POLayer.LIST_PREVIEW )
tvSubLabel.setText( String.format( "(Preview until %1$TD)", item.item.pub().asDate( PO.distributionDate ) ) );
else
tvSubLabel.setText( item.item.getTouchInfo() );

if( this.listId == POLayer.LIST_FAVE ){
setOfflineImage(ivPubFavorite, SG.isOnline, item.item.isFavorite() ? R.drawable.ls_star_remove : R.drawable.ls_star_grey );
} else {
setOfflineImage(ivPubFavorite, SG.isOnline, item.item.isFavorite() ? R.drawable.ls_star_gold : R.drawable.ls_star_grey );
}
ivPubFavorite.setClickable(true);
ivPubFavorite.setTag(item);
ivPubFavorite.setOnClickListener( faveClick );

ivNot.setClickable( false );
if( listId == POLayer.LIST_REQUIRED || listId == POLayer.LIST_UNREAD ) {
ivNot.setTag(item);
ivNot.setOnClickListener( notClick );
if( item.item.isRequired() ) {
if( item.item.isComplete() ) {
setOfflineImage( ivNot, item.item.asString( PO.offlineUTC ).isEmpty(), R.drawable.ls_doc_confirmed );
} else {
ivNot.setClickable(true);
ivNot.setImageResource( R.drawable.ls_doc_pencil );
}
} else {
if( item.item.isComplete() ) {
ivNot.setImageResource(R.drawable.ls_check_green);
} else {
ivNot.setClickable(true);
setOfflineImage( ivNot, SG.isOnline, R.drawable.ls_check_grey );
}
}
} else {
ivNot.setVisibility( View.GONE );
}
} else {
switch( item.itemType ) {
case WrapPO.HEADER_EMPTY:
rowView = inflater.inflate( R.layout.row_header_empty, parent, false);
break;
case WrapPO.HEADER_MORE:
rowView = inflater.inflate( R.layout.row_header_more, parent, false);
break;
default:
rowView = inflater.inflate( R.layout.row_header, parent, false);
}
TextView tvLabel = (TextView) rowView.findViewById(R.id.tvHeader);
tvLabel.setText( item.itemHeader );
}
rowView.setOnLongClickListener( longClick );
rowView.setOnClickListener( shortClick );
return rowView;
}
@Override
public long getItemId(int position) {
if( getItem( position ).item != null )
return getItem(position).item.asInteger( PO.pubId );
else
return (long) -1;
}
}

这可能是您需要的更复杂的示例,但它展示了如何根据行的内容对行使用不同的布局,并且其中包含可点击的 ImageView,就像您需要你的投票按钮。

关于android - android中的数据绑定(bind)复杂列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com