【问题标题】:I want inflate two xml in the same listview我想在同一个列表视图中膨胀两个 xml
【发布时间】:2014-04-20 15:42:36
【问题描述】:

我想把这个设计放在 mi xml 中。首先是一个标题和一张图片,然后是多行以显示有关照片的信息。我的问题是,当我选择第一行时,我将所有内容放入 RelativeLayout 中,我选择了照片、标题和第一行。因此,我必须在两个 xml 中放入主要元素(照片和标题),在其他 xml 中放入所有行。如何在 Listview 中添加两个 xml?我不知道我该怎么做。

我无法发布图片,因此结构将是:

(列表视图中的一项) 1)标题和照片不要重复 2) ROWS - 不止一行

这就像在列表视图的一行中放置一个标题。因为我想在每张照片中放置 cmets,而且每张照片可能不止一个。

我所有的 xml 都在同一个 xml 中,但是使用这种格式时,我在单击一行时遇到了问题。

照片和用户详细信息只能显示一次,并且行取决于每张照片,有超过一行的照片。因此我认为最好的选择是做两个 xml 文件并从 java 代码中膨胀它,但我不知道这样做。如果有人有其他最佳选择将被接受。

我的 getView 代码如下:

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        ViewHolder holder;

        Object repeat = MyArrList.get(position).get("Repeat");

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int height = metrics.heightPixels;
        int width = metrics.widthPixels;

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

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

            holder = new ViewHolder();

            holder.imageView = (ImageView) convertView.findViewById(R.id.ColImgPath);

            //Userdetails
            holder.tvU = (TextView) convertView.findViewById(R.id.tvU);
            holder.tvUN = (TextView) convertView.findViewById(R.id.tvUN);
            holder.ivProfilePhoto = (ImageView) convertView.findViewById(R.id.profilephoto);

            //Accessory details
            holder.tvN = (TextView) convertView.findViewById(R.id.tvN);
            holder.tvB = (TextView) convertView.findViewById(R.id.tvB);
            holder.tvP = (TextView) convertView.findViewById(R.id.tvP);
            holder.tvS = (TextView) convertView.findViewById(R.id.tvS);

            convertView.setTag(holder);

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

        holder.imageView.setPadding(5, 5, 5, 5);
        holder.imageView.setRotation(90);

        if(repeat.equals("1")){

            holder.imageView.setVisibility(View.VISIBLE);

            holder.tvU.setVisibility(View.VISIBLE);
            holder.tvUN.setVisibility(View.VISIBLE);
            holder.tvU.setText(MyArrList.get(position).get("U").toString());
            holder.tvUN.setText(MyArrList.get(position).get("UN").toString());

        }
        else {
            //If the photo_id is repeated these params are not shown
            holder.tvU.setVisibility(View.GONE);
            holder.tvUN.setVisibility(View.GONE);
            holder.imageView.setVisibility(View.GONE);

        }

        try {
            Bitmap bmp = ((Bitmap) MyArrList.get(position).get("ImageThumBitmap"));

            Bitmap photobitmap1 = Bitmap.createScaledBitmap(bmp, width/2, height/2, true);
            holder.imageView.setImageBitmap((Bitmap) MyArrList.get(position).get("Photo"));

        } catch (Exception e) {
            // When Error
            holder.imageView.setImageResource(android.R.drawable.ic_menu_report_image);
        }

        holder.tvN.setPadding(20, 0, 0, 0);
        holder.tvN.setText(MyArrList.get(position).get("N").toString());

        holder.tvB.setPadding(20, 0, 0, 0);
        holder.tvBsetText(MyArrList.get(position).get("B").toString());

        holder.tvP.setPadding(20, 0, 0, 0);

        holder.tvP.setText(MyArrList.get(position).get("P").toString());

        holder.tvS.setPadding(20, 0, 0, 0);
        holder.tvS.setText(MyArrList.get(position).get("S").toString());

        return convertView;

    }

【问题讨论】:

    标签: android xml android-listview


    【解决方案1】:

    您可以将 Header 放在单独的 Xml 中,然后将其添加到您的 ListView Header 中,如下所示

    init listView
    inflate header and add it to the list
    set any adapter to listView (!!!)
    set listView adapter
    

    【讨论】:

    • 一个实际的例子总是比只写步骤更好。
    • 我完全不明白,你说要放入三个不同的xml(一个用于标题,另一个用于图像,另一个用于行)?这样我可以单独触摸项目,但我不知道如何实现。
    • 您不想这样做,您可以为 Header 和 Image 创建两个 XML,另一个用于行,您可以将第一个 xml 作为标题添加到列表视图,其他用于列表视图适配器可以参考以下链接在列表视图中添加标题blograchita.wordpress.com/2013/05/18/… 如果您对此有任何其他疑问,请告诉我
    • 我觉得我解释得不好。我想要每个块的标题,每个块包含标题、图像和一些行。标题包含上传照片的用户,因此我需要在每张照片中放入。每张照片可以有多行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多