奇数ListView

时间:2015-09-17 08:02:58

标签: android listview layout view

我正在尝试根据此处显示的情况制作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 enter image description here

ListView项目将从数据库加载,因此其中有多少项目取决于从数据库返回的数据。但无论如何,如果它是1项或100万,则应重复相同的模式。 我完全不知道如何制作这样的布局。任何人都可以给出一个例子,一个链接到另一个Stack Overflow问题(因为我不知道这会被称为自己查找它...)类似于这个问题或教程?我希望有一个人可以帮助我!提前谢谢。

3 个答案:

答案 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方法来实现所描述的行为。