视图内部具有视图的ViewHolder模式显示重复项

时间:2018-12-27 05:55:32

标签: android listview android-recyclerview android-viewholder

我有一个.xml文件,该文件是ListView的一行,并且其中包含这样的布局:

<meta charset="utf-8">
<title>GrapesJS</title>
  <link rel="stylesheet" href="https://unpkg.com/grapesjs/dist/css/grapes.min.css">
  <script src="https://unpkg.com/grapesjs"></script>
  <style>
    body,
    html {
      height: 100%;
      margin: 0;
   }
  </style>
  <div id="gjs" style="height:0px; overflow:hidden;">
    <div class="panel">
      <h1 class="welcome">Welcome to</h1>
        <div class="big-title">
          <svg class="logo" viewBox="0 0 100 100">
            <path d="M40 5l-12.9 7.4 -12.9 7.4c-1.4 0.8-2.7 2.3-3.7 3.9 -0.9 1.6-1.5 3.5-1.5 5.1v14.9 14.9c0 1.7 0.6 3.5 1.5 5.1 0.9 1.6 2.2 3.1 3.7 3.9l12.9 7.4 12.9 7.4c1.4 0.8 3.3 1.2 5.2 1.2 1.9 0 3.8-0.4 5.2-1.2l12.9-7.4 12.9-7.4c1.4-0.8 2.7-2.2 3.7-3.9 0.9-1.6 1.5-3.5 1.5-5.1v-14.9 -12.7c0-4.6-3.8-6-6.8-4.2l-28 16.2"/>
         </svg>
         <span>GrapesJS</span>
       </div>
       <div class="description">
        This is a demo content from index.html. For the development, you shouldn't edit this file, instead you can
        copy and rename it to _index.html, on next server start the new file will be served, and it will be ignored by git.
    </div>
  </div>
 </div>

<script type="text/javascript">
  $(window).on('load', function(){
      var editor = grapesjs.init({
          showOffsets: 1,
          noticeOnUnload: 0,
          container: '#gjs',
          height: '100%',
          fromElement: true,
          storageManager: { autoload: 0 },
      });
  });

editor.BlockManager.add('testBlock', {
    label: 'Block',
    attributes: { class:'gjs-fonts gjs-f-b1' },
    content: `<div style="padding-top:50px; padding-bottom:50px; text-align:center">Test block</div>`
})

现在,当我想在适配器中使用ViewHolder模式时,它仅显示此“喜欢”布局的重复值(其中包含图像和textview) 我不知道为什么。这是Java代码:

<relativeLayout>
           <Textview username blah blah/>
           <include
                android:id="@+id/like_button_layout"
                layout="@layout/like" />
<relativeLayout>

用户名都是正确的,但是我认为当使用我不知道的视图持有者模式时,需要一种特殊的方法来扩大视图内部的视图。想法?

1 个答案:

答案 0 :(得分:0)

这在回收器视图中发生,也许也在列表视图中发生..事情在回收器视图中,视图被回收,一个视图持有者被一次又一次地使用。因此,一个视图持有者的状态仍然存在。 我通常要做的就是在 onBindViewHolder()

的第一行中重置状态