我正在尝试根据此处显示的情况制作table_par<-read.csv("table_parameter.csv")
times<-as.numeric(substr(table_par$time,9,10))
#create empty dataframe for output
sub.df <- data.frame(name=NA, X=NA, time=NA,Avg.PM10=NA,sill=NA,range=NA,nugget=NA)[numeric(0), ]
t_list=seq(1,24,1)
PM_list=seq(0,100,10)
for (t in t_list){
#t=t_list[1]
for (PM in PM_list){
#PM=PM_list[4]
PM2=PM+10
sub <-subset(table_par,times ==t & Avg.PM10>PM & Avg.PM10<=PM2)
if (length(sub$X)!=0) { #to avoid errors because of empty sub
name = paste("par_",t,"am_",PM,"to",PM2 , sep="")
sub$name = name
sub.df <- rbind(sub.df , sub) }
}
}
sub.df #print data frame
:
ListView项目将从数据库加载,因此其中有多少项目取决于从数据库返回的数据。但无论如何,如果它是1项或100万,则应重复相同的模式。 我完全不知道如何制作这样的布局。任何人都可以给出一个例子,一个链接到另一个Stack Overflow问题(因为我不知道这会被称为自己查找它...)类似于这个问题或教程?我希望有一个人可以帮助我!提前谢谢。
答案 0 :(得分:2)
我认为你必须使用RecycleView。 Adapter有方法来设置不同的行视图。
@Override
public int getItemViewType(int position) {
// Define a way to determine which layout to use, here it's just evens and odds.
return position % 2;
}
@Override
public int getViewTypeCount() {
return 2; // Count of different layouts
}
if(convertView == null){ //你可以将这一行移到你的构造函数中,inflater服务不会改变。
mInflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
if(getItemViewType(position) == 0)
convertView = mInflater.inflate(R.layout.listview_item_product_complete, null);
else
convertView = mInflater.inflate(R.layout.listview_item_product_inprocess, null);
// etc, etc...
如果您想了解更多信息,请浏览android recyler View文档。
答案 1 :(得分:0)
也许读到这个: https://stackoverflow.com/questions/6042781/android-listview
你也可以使用表格布局进行一些微小的改动。
答案 2 :(得分:0)
阅读这篇文章RecyclerView: Grid with header。您可以使用GridLayoutManager
使用2列和GridLayoutManager.setSpanSizeLookup
方法来实现所描述的行为。