2

所以这是我的问题。

我正在研究 API 14,我在 Eclipse 的帮助下制作了一个“MasterDetailFlow”。在“双窗格”的左侧,我有一些文本视图和一个片段。(我做的很简单)

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="horizontal"
    tools:context=".ListActivity" >

    <RelativeLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="27"
        android:orientation="vertical" >
        <TextView
              android:text="toto" 
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="textView"/>

          <fragment
              android:id="@+id/fragment1"
              android:name=""
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_below="button"
              />
    </RelativeLayout>
    //the right part of the screen, doesn't matter
    <FrameLayout
         />

</LinearLayout>

Fragment 类是这样的

public class MyFragment extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = null;

        if (mItem != null) {
                if(mItem.isTrue){
                rootView = inflater.inflate(layout1, container, false);
            }else{
                rootView = inflater.inflate(layout2, container, false);
                }
        }
    }
}

我使用 ArrayAdapter 在列表中动态添加项目。事情是:当列表不需要滚动时(列表的高度小于片段的高度),一切都以良好的方式显示。但是当列表更大(可见部分没问题)并且我滚动列表时,一些应该有 layout1 的项目有 layout2,反之亦然。这些项目奇怪地总是在交界处,就像隐藏的第一个元素一样。当您单击该项目时,它会正常运行。例如,应为 layout1(但显示为 layout2)的项目在单击时充当项目 layout1。我不知道它是否清楚,因为它不适合我:)

当我在 logcat 中打印片段中的字符串列表时,它的顺序很好。所以它看起来只是一个“显示错误”,但它来自哪里?

有没有人有类似的问题?知道问题吗?

谢谢。

编辑 :

这是我的自定义 ArrayAdapter。我没有getItemViewType 和getViewTypeCount 方法,我应该处理它。到目前为止,我一直在使用存储在 DummyItem 中的布尔值来了解它是类型 1 项目还是类型 2。

    public class CustomArrayAdapter extends ArrayAdapter<DummyItem>
    @Override
        public View getView(int p_position, View p_convertView, ViewGroup p_parent) {
            DummyItem item = data.get(p_position);
            View row = p_convertView;
            if(row==null){
            if(item.isTrue){
            LayoutInflater inflater = ((Activity)m_context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, p_parent, false);
            row.setTag(item);
            TextView label1 = (TextView) row.findViewById(textViewId);
            label1.setText(item.content);


                }else{
                    LayoutInflater inflater = ((Activity)m_context).getLayoutInflater();

                    row = inflater.inflate(R.layout.simple_list_item_activated_1_custom, p_parent, false);
                    TextView label2 = (TextView) row.findViewById(R.id.text1);
                    labelPiece.setText(item.content);


                }


            }else{
            }

            return row;
        }
    }
4

0 回答 0