在getView()中膨胀两个布局以实现ListView Section头

时间:2015-01-21 10:02:25

标签: android listview android-listview android-arrayadapter

我正在尝试为我的ListView创建节标题,其方式是某些列表行有标题而有些列表没有。所以我有三个xml布局文件。 fragment_listview.xml包含<ListView>

row_listview.xml包含ListView

的内容

header_listview.xml用于节标题。

Feeds.java是我的模特课。

所以在我的适配器中我有这样的东西:

public class FeedsArrayAdapter extends ArrayAdapter<Feeds> {

private Context context;
private List<Feeds> feeds;
private LayoutInflater vi;

FeedsArrayAdapter(Context c, List<Feed> ff){ //initializes all the class member fields }

public void getView(int position, View convertView, ViewGroup parent){

    Feeds f = feeds.get(position);
    if(f.headerNeeded()){

       convertView = vi.inflate(R.layout.header_listview, null);
       TextView textViewHeader = (TextView) convertView.findViewById(R.id.feed_header);

       textViewHeader.setText(new SimpleDateFormat("dd/MM/yyyy").format(feed.date));
   }
   else {
        convertView = vi.inflate(R.layout.row_listview, null);

        TextView textViewfeedHeading = (TextView) convertView.findViewById(R.id.feed_heading);
        TextView textViewfeedSubheading = (TextView) convertView.findViewById(R.id.feed_subheading);
        TextView textViewfeedDate = (TextView) convertView.findViewById(R.id.textViewDate);
        ImageView imageViewfeedIcon = (ImageView) convertView.findViewById(R.id.feed_icon);
        ImageView imageViewfeedBanner = (ImageView) convertView.findViewById(R.id.feed_banner);

        textViewfeedHeading.setText(feed.title);
        textViewfeedSubheading.setText(feed.subtitle);
        textViewfeedDate.setText(new SimpleDateFormat("dd/MM/yyyy").format(feed.date));

    }

    return convertView;
 }

所以这给了我们这样的东西:

---header1----
---header2----
___Row 3_____
___Row 4_____

我想要的是:

-----header 1------
_____Row 1_______
-----header 2------
_____Row 2_______
_____Row 3_______
_____Row 4_______

如果我尝试在row.listview中充气if(true),我会遇到异常。

如何解决此问题。

3 个答案:

答案 0 :(得分:0)

您可以使用Sticky Header Library here

答案 1 :(得分:0)

答案 2 :(得分:-1)

在BaseExpandableAdapter中使用expandable listview