【问题标题】:Adding dynamic linear layouts to a list view将动态线性布局添加到列表视图
【发布时间】:2012-12-06 07:25:45
【问题描述】:

我正在使用列表视图在其上显示一些数据并将其与自定义适配器一起使用,现在在某个时间实例中,我想将图像视图显示为其中的列表项。对于这种情况,我制作了动态线性布局并在其中添加了图像视图。现在我希望在某些情况下,此图像视图布局应作为列表项显示在列表视图的最后一个中,作为添加到列表中的新项。

动态生成布局

LinearLayout linearLayout = new LinearLayout(UserChatActivity.this);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                     LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

            ImageView img = new ImageView(UserChatActivity.this);
            img.setImageBitmap(BitmapFactory.decodeFile(picturePath));


            linearLayout.addView(img, layoutParams);


            mList.addView(linearLayout);

但它给出了一个名为: - 视图不能直接添加到适配器视图中的错误。我知道我们必须为适配器扩展视图,但是如何使用列表中的先前数据添加新视图。???

谢谢

【问题讨论】:

  • 您不能将线性布局添加到列表视图中,因为列表视图不是容器布局。
  • @DipakKeshariya 我知道这件事。我只是问那解决办法是什么?
  • 如果您尝试在列表视图的末尾添加视图,请尝试列表视图页脚

标签: android listview


【解决方案1】:

我认为MergeAdapter 完美地解决了你的问题。

【讨论】:

    【解决方案2】:

    您可以试试这个,将代码放入适配器中的 getView() 中。

    if (view == null) 
    {
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        view = vi.inflate(R.layout.list, null);
                        **// list.xlm is your layout**
    } 
    
    **lnHolder is in list.xml**
    LinearLayout lnHolder = (LinearLayout ) view.findViewById(R.id.lnHolder);
    
    LinearLayout linearLayout = new LinearLayout(UserChatActivity.this);
    
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                             LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);    
    ImageView img = new ImageView(UserChatActivity.this);
    img.setImageBitmap(BitmapFactory.decodeFile(picturePath));   
    linearLayout.addView(img, layoutParams);
     lnHolder.addView(linearLayout);
    

    【讨论】:

      【解决方案3】:

      您的 getView() 方法将如下所示,

      public View getView(int position, View convertView, ViewGroup parent) {
      
                  if (position == 10) //if you already know the position use static position
                      //  else mydatalist.get(position).hasImage()== true and 
                      // make one function hasImage in your data structure which checks weather its a image or text 
                  {
                      convertView = _inflater.inflate(R.layout.simplelinearlayout,
                              null);
      
                      LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                              LinearLayout.LayoutParams.WRAP_CONTENT,
                              LinearLayout.LayoutParams.WRAP_CONTENT);
      
                      ImageView img = new ImageView(UserChatActivity.this);
                      img.setImageBitmap(BitmapFactory.decodeFile(picturePath));
      
                      convertView.addView(img, layoutParams);
                  } else {
                      if (convertView == null) {
                          convertView = _inflater.inflate(R.layout.missingitem_row,
                                  null);
                          viewHolder = new ViewHolder();
                          viewHolder.textTitle = (TextView) convertView
                                  .findViewById(R.id.txtTitle);
      
                          convertView.setTag(viewHolder);
      
                      } else {
                          viewHolder = (ViewHolder) convertView.getTag();
                      }
      
                      viewHolder.textTitle.setText(messageText);
                  }
                  return convertView;
              }
      

      【讨论】:

        【解决方案4】:

        notifiyDataSetChange() 方法用于更新适配器

        listView dynamic add item

        【讨论】:

          猜你喜欢
          • 2016-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多