【问题标题】:How to change row view in listview when clicking on item单击项目时如何更改列表视图中的行视图
【发布时间】:2016-03-16 18:31:40
【问题描述】:

当我点击它时是否可以更改行视图?例如,我有列表视图,其中显示了一些简短信息的行,当单击行详细视图时,将显示而不是旧行。 我尝试在我的 listView 中使用 addView,但出现“Listview addView(View, int) is not supported in AdapterView”错误。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    试试这样的:

    public class MyAdapter extends BaseAdapter {
    
        private Context mContext;
        private List<UserPojo> mList;
    
        public MyAdapter(Context context, List<UserPojo> users) {
            this.mContext = context;
            this.mList = users;
        }
    
        @Override
        public int getCount() {
            return mList.size();
        }
    
        @Override
        public UserPojo getItem(int position) {
            return mList.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final UserPojo user = mList.get(position);
            final ViewHolder holder;
    
            if (convertView == null) {
                convertView = View.inflate(mContext, R.layout.item_ad, null);
    
                holder = new ViewHolder();
    
                holder.pic = (CircleImageView) convertView.findViewById(R.id.profile_imageView);
                holder.name = (TextView) convertView.findViewById(R.id.name_textView);
    
                convertView.setTag(holder);
            } else{
                holder = (ViewHolder) convertView.getTag();
            }
    
            if (user.isClicked) {
                holder.pic.setVisibility(View.VISIBLE);
                holder.name.setVisibility(View.GONE);
            } else {
                holder.pic.setVisibility(View.GONE);
                holder.name.setVisibility(View.VISIBLE);
            }
    
            holder.name.setText("text");
            holder.name.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    user.setClicked(true);
                    notifyDataSetChanged();
                }
            });
    
            return convertView;
        }
    
        private static class ViewHolder {
            CircleImageView pic;
            TextView name;
        }
    
    }
    

    【讨论】:

    • 它有效,我使用这种方式,但是当我单击行时,我需要从另一个 xml 更改视图布局。我的应用程序中有两个版本的视图 - 在纵向视图中,单击它会扩展行,在横向视图中 - 两个片段,左侧 - 列表视图,右侧 - 详细视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多