在Android中调整ListView行的高度?

在Android中调整ListView行的高度?,android,listview,Android,Listview,我正在使用ListView开发一个应用程序,以显示运行时从服务器获取的一些数据 我在列表视图中动态设置数据。下面是我的第行XML: 就第一个元素而言,我必须显示“顶部标题继电器”,其余元素我必须将可见性更改为GONE。在执行此操作时,其他行的高度保持与第一行的高度相同,这会导致行底部出现较大的空白 建议我如何在运行时调整列表其他行的高度 适配器类: public class PostsListAdapter extends BaseAdapter implements OnClickL

我正在使用ListView开发一个应用程序,以显示运行时从服务器获取的一些数据

我在列表视图中动态设置数据。下面是我的第行XML:


就第一个元素而言,我必须显示“顶部标题继电器”,其余元素我必须将可见性更改为GONE。在执行此操作时,其他行的高度保持与第一行的高度相同,这会导致行底部出现较大的空白

建议我如何在运行时调整列表其他行的高度

适配器类:

public class PostsListAdapter extends BaseAdapter implements OnClickListener{

    ArrayList<String> itemList=null;

    private Activity _mContext=null;
    public LayoutInflater inflater=null;
    private Context _Context = null;
    private ArrayList<ViewHolder> listHolder=null;
    private int[] imageList = {R.drawable.calendar_icon,
            R.drawable.location_icon,R.drawable.fun_icon,
            R.drawable.notification_icon,R.drawable.invitation_icon,
            R.drawable.change_wedding,R.drawable.settings_icon,
            R.drawable.logout_icon};

    /**
     * PostsListAdapter
     * @param context
     * @param itemList
     */
    public PostsListAdapter(Activity context,ArrayList<String> itemList) {
        super();
        this._Context = context;
        this._mContext = context;
        this.itemList = itemList;

        this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        listHolder = new ArrayList<PostsListAdapter.ViewHolder>();
    }


    public int getCount() {
        return itemList.size();
    }

    public Object getItem(int position) {
        return itemList.get(position);
    }

    public long getItemId(int position) {
        return 0;
    }

    public static class ViewHolder{
        private ImageView _postImageView=null;
        private ImageView _profilePicImageView=null;
        private TextView _usernameTitleTextView=null;
        private TextView _timeTextView=null;
        private TextView _likeCountTextView=null;
        private TextView _commentsCountTitleTextView=null;

        private LinearLayout _likeLinearLayout=null;
        private LinearLayout _commentLinearLayout=null;
        private LinearLayout _favLinearLayout=null;
        private RelativeLayout _topheaderRelay=null;
        private ImageView _barViewImageView=null;
    }
    /**
     * 
     */
    public View getView(final int position, View convertView, ViewGroup parent) {

        final ViewHolder holder;
        if(convertView==null){
            holder = new ViewHolder();

            convertView = inflater.inflate(R.layout.post_list_element, null);

            holder._postImageView=(ImageView)convertView.findViewById(R.id.photo_IV);
            holder._postImageView.setOnClickListener(this);
            holder._profilePicImageView=(ImageView)convertView.findViewById(R.id.profile_pic_IV);
            holder._profilePicImageView.setOnClickListener(this);

            holder._usernameTitleTextView = (TextView) convertView.findViewById(R.id.username_tv);
            holder._usernameTitleTextView.setClickable(false);
            holder._timeTextView = (TextView) convertView.findViewById(R.id.posttime_tv);
            holder._timeTextView.setClickable(false);
            holder._likeCountTextView = (TextView) convertView.findViewById(R.id.likes_count_tv);
            holder._likeCountTextView.setClickable(false);
            holder._commentsCountTitleTextView = (TextView) convertView.findViewById(R.id.comment_count_tv);
            holder._commentsCountTitleTextView.setClickable(false);

            holder._likeLinearLayout = (LinearLayout) convertView.findViewById(R.id.like_lilay);
            holder._likeLinearLayout.setOnClickListener(this);
            holder._commentLinearLayout = (LinearLayout) convertView.findViewById(R.id.comment_lilay);
            holder._commentLinearLayout.setOnClickListener(this);
            holder._favLinearLayout = (LinearLayout) convertView.findViewById(R.id.fav_lilay);
            holder._favLinearLayout.setOnClickListener(this);

            convertView.setTag(holder);
        }
        else
            holder=(ViewHolder)convertView.getTag();


        if(position!=0){
            holder._topheaderRelay = (RelativeLayout) convertView.findViewById(R.id.top_header_relay);
            holder._topheaderRelay.setVisibility(View.GONE);
            holder._barViewImageView = (ImageView) convertView.findViewById(R.id.bar_view);
            holder._barViewImageView.setVisibility(View.GONE);
        }else{
            holder._topheaderRelay = (RelativeLayout) convertView.findViewById(R.id.top_header_relay);
            holder._topheaderRelay.setVisibility(View.VISIBLE);
            holder._barViewImageView = (ImageView) convertView.findViewById(R.id.bar_view);
            holder._barViewImageView.setVisibility(View.VISIBLE);
        }
        listHolder.add(holder);

        return convertView;
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {

        case R.id.like_lilay:

            break;
        case R.id.comment_lilay:

            break;
        case R.id.fav_lilay:

            break;
        case R.id.profile_pic_IV:

            break;
        case R.id.photo_IV:

            break;
        default:
            break;
        }
    }
}
公共类PostsListAdapter扩展BaseAdapter实现OnClickListener{
ArrayList itemList=null;
私有活动_mContext=null;
公共充气机=空;
私有上下文_Context=null;
私有ArrayList listHolder=null;
private int[]imageList={R.drawable.calendar_图标,
R.drawable.位置图标,R.drawable.fun图标,
R.drawable.通知图标,R.drawable.邀请图标,
R.drawable.change\u婚礼,R.drawable.settings\u图标,
R.drawable.logout_icon};
/**
*后滑动适配器
*@param上下文
*@param itemList
*/
公共PostsListAdapter(活动上下文,ArrayList itemList){
超级();
这._Context=Context;
这个。_mContext=上下文;
this.itemList=itemList;
this.inflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u inflater\u SERVICE);
listHolder=新的ArrayList();
}
public int getCount(){
返回itemList.size();
}
公共对象getItem(int位置){
返回itemList.get(位置);
}
公共长getItemId(int位置){
返回0;
}
公共静态类视图持有者{
私有图像视图_postImageView=null;
私有ImageView _profilePicImageView=null;
私有文本视图_usernametittextview=null;
私有文本视图_timeTextView=null;
私有文本视图_likeCountTextView=null;
私有文本视图_commentsconttitletextview=null;
private LinearLayout _likeLineEarlLayout=null;
private LinearLayout _commentLinearLayout=null;
private LinearLayout _favLinearLayout=null;
private RelativeLayout_topheaderRelay=null;
私有ImageView _barViewImageView=null;
}
/**
* 
*/
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终持票人;
if(convertView==null){
holder=新的ViewHolder();
convertView=充气机。充气(R.layout.post\u列表元素,空);
支架._postImageView=(ImageView)convertView.findViewById(R.id.photo_IV);
holder.\u postImageView.setOnClickListener(此);
holder._profilePicImageView=(ImageView)convertView.findViewById(R.id.profile_pic_IV);
holder._profilePicImageView.setOnClickListener(此);
holder.\u usernametletextview=(TextView)convertView.findViewById(R.id.username\u tv);
holder.\u usernametittextview.setClickable(false);
holder.\u timeTextView=(TextView)convertView.findViewById(R.id.posttime\u tv);
holder.\u timeTextView.setClickable(假);
holder.\u likeCountTextView=(TextView)convertView.findViewById(R.id.likes\u count\u tv);
holder._likeCountTextView.setClickable(假);
holder.\u commentsconttitletextview=(TextView)convertView.findviewbyd(R.id.comment\u count\u tv);
holder.\u CommentsCountTitleExtView.setClickable(错误);
holder._likelineearlayout=(LinearLayout)convertView.findViewById(R.id.like_lilay);
holder.\u likeLineEarlayout.setOnClickListener(此);
holder.\u commentLinearLayout=(LinearLayout)convertView.findViewById(R.id.comment\u lilay);
holder.\u commentLinearLayout.setOnClickListener(此);
holder.\u favLinearLayout=(LinearLayout)convertView.findViewById(R.id.fav\u lilay);
holder.\u favLinearLayout.setOnClickListener(此);
convertView.setTag(支架);
}
其他的
holder=(ViewHolder)convertView.getTag();
如果(位置!=0){
保持架._topheaderRelay=(RelativeLayout)convertView.findViewById(R.id.top_header_继电器);
支架._topheaderRelay.setVisibility(视图已消失);
holder._barViewImageView=(ImageView)convertView.findViewById(R.id.bar_视图);
支架._barViewImageView.setVisibility(View.GONE);
}否则{
保持架._topheaderRelay=(RelativeLayout)convertView.findViewById(R.id.top_header_继电器);
支架._topheaderRelay.setVisibility(视图可见);
holder._barViewImageView=(ImageView)convertView.findViewById(R.id.bar_视图);
支架._barViewImageView.setVisibility(View.VISIBLE);
}
列表持有人。添加(持有人);
返回视图;
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.like_lilay:
打破
案例R.id.comment_lilay:
打破
案例R.id.fav_lilay:
打破
案例R.id.profile_pic_IV:
打破
案例R.id.照片四:
打破
违约:
打破
}
}
}

填充列表时,getview函数是展开视图并设置其布局属性的最佳位置。您可以使用setvisibility函数基于项目位置隐藏其他行的可见性

是否可以显示适配器类?是否尝试在getview方法中为relativelayout设置LayoutParams?阅读我的查询
public class PostsListAdapter extends BaseAdapter implements OnClickListener{

    ArrayList<String> itemList=null;

    private Activity _mContext=null;
    public LayoutInflater inflater=null;
    private Context _Context = null;
    private ArrayList<ViewHolder> listHolder=null;
    private int[] imageList = {R.drawable.calendar_icon,
            R.drawable.location_icon,R.drawable.fun_icon,
            R.drawable.notification_icon,R.drawable.invitation_icon,
            R.drawable.change_wedding,R.drawable.settings_icon,
            R.drawable.logout_icon};

    /**
     * PostsListAdapter
     * @param context
     * @param itemList
     */
    public PostsListAdapter(Activity context,ArrayList<String> itemList) {
        super();
        this._Context = context;
        this._mContext = context;
        this.itemList = itemList;

        this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        listHolder = new ArrayList<PostsListAdapter.ViewHolder>();
    }


    public int getCount() {
        return itemList.size();
    }

    public Object getItem(int position) {
        return itemList.get(position);
    }

    public long getItemId(int position) {
        return 0;
    }

    public static class ViewHolder{
        private ImageView _postImageView=null;
        private ImageView _profilePicImageView=null;
        private TextView _usernameTitleTextView=null;
        private TextView _timeTextView=null;
        private TextView _likeCountTextView=null;
        private TextView _commentsCountTitleTextView=null;

        private LinearLayout _likeLinearLayout=null;
        private LinearLayout _commentLinearLayout=null;
        private LinearLayout _favLinearLayout=null;
        private RelativeLayout _topheaderRelay=null;
        private ImageView _barViewImageView=null;
    }
    /**
     * 
     */
    public View getView(final int position, View convertView, ViewGroup parent) {

        final ViewHolder holder;
        if(convertView==null){
            holder = new ViewHolder();

            convertView = inflater.inflate(R.layout.post_list_element, null);

            holder._postImageView=(ImageView)convertView.findViewById(R.id.photo_IV);
            holder._postImageView.setOnClickListener(this);
            holder._profilePicImageView=(ImageView)convertView.findViewById(R.id.profile_pic_IV);
            holder._profilePicImageView.setOnClickListener(this);

            holder._usernameTitleTextView = (TextView) convertView.findViewById(R.id.username_tv);
            holder._usernameTitleTextView.setClickable(false);
            holder._timeTextView = (TextView) convertView.findViewById(R.id.posttime_tv);
            holder._timeTextView.setClickable(false);
            holder._likeCountTextView = (TextView) convertView.findViewById(R.id.likes_count_tv);
            holder._likeCountTextView.setClickable(false);
            holder._commentsCountTitleTextView = (TextView) convertView.findViewById(R.id.comment_count_tv);
            holder._commentsCountTitleTextView.setClickable(false);

            holder._likeLinearLayout = (LinearLayout) convertView.findViewById(R.id.like_lilay);
            holder._likeLinearLayout.setOnClickListener(this);
            holder._commentLinearLayout = (LinearLayout) convertView.findViewById(R.id.comment_lilay);
            holder._commentLinearLayout.setOnClickListener(this);
            holder._favLinearLayout = (LinearLayout) convertView.findViewById(R.id.fav_lilay);
            holder._favLinearLayout.setOnClickListener(this);

            convertView.setTag(holder);
        }
        else
            holder=(ViewHolder)convertView.getTag();


        if(position!=0){
            holder._topheaderRelay = (RelativeLayout) convertView.findViewById(R.id.top_header_relay);
            holder._topheaderRelay.setVisibility(View.GONE);
            holder._barViewImageView = (ImageView) convertView.findViewById(R.id.bar_view);
            holder._barViewImageView.setVisibility(View.GONE);
        }else{
            holder._topheaderRelay = (RelativeLayout) convertView.findViewById(R.id.top_header_relay);
            holder._topheaderRelay.setVisibility(View.VISIBLE);
            holder._barViewImageView = (ImageView) convertView.findViewById(R.id.bar_view);
            holder._barViewImageView.setVisibility(View.VISIBLE);
        }
        listHolder.add(holder);

        return convertView;
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {

        case R.id.like_lilay:

            break;
        case R.id.comment_lilay:

            break;
        case R.id.fav_lilay:

            break;
        case R.id.profile_pic_IV:

            break;
        case R.id.photo_IV:

            break;
        default:
            break;
        }
    }
}