Android 带有自定义适配器的ListView:某些项被隐藏

Android 带有自定义适配器的ListView:某些项被隐藏,android,android-layout,android-listview,android-adapter,Android,Android Layout,Android Listview,Android Adapter,我有一个带有自定义适配器的ListView,但在ListView中滚动时,某些项目会隐藏: 从图中可以看到,从a69跳到a72,留下隐藏项a70和a71 以下是自定义适配器的代码: public NewCurrenciesAdapter(ArrayList<NewCurrencyData> list, Context context) { m_list = list; m_context = context; m_layoutInflater = (Layou

我有一个带有自定义适配器的ListView,但在ListView中滚动时,某些项目会隐藏:

从图中可以看到,从a69跳到a72,留下隐藏项a70和a71

以下是自定义适配器的代码:

public NewCurrenciesAdapter(ArrayList<NewCurrencyData> list, Context context) {
    m_list = list;
    m_context = context;
    m_layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return m_list.size();
}

@Override
public Object getItem(int position) {
    return m_list.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = m_layoutInflater.inflate(R.layout.addcurrency_item, parent, false);
    }

    TextView currencyName = (TextView) convertView.findViewById(R.id.textCurrencyName);
    currencyName.setText("a" + position);

    ImageView currencyImage = (ImageView) convertView.findViewById(R.id.imageCurrencyCountry);

    currencyImage.setImageResource(getImageId(m_context, "c" + m_list.get(position).name.toLowerCase()));

    if (m_list.get(position).checked) {
        convertView.setBackgroundResource(android.R.color.holo_green_dark);
    }
    else {
        convertView.setBackgroundResource(android.R.color.background_light);
    }

    return convertView;
}
public-newcurrencesadapter(数组列表,上下文){
m_list=列表;
m_context=上下文;
m_layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
@凌驾
public int getCount(){
返回m_list.size();
}
@凌驾
公共对象getItem(int位置){
返回m_list.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=m_LayoutFlater.inflate(R.layout.addcurrency_项,父项,false);
}
TextView currencyName=(TextView)convertView.findViewById(R.id.textCurrencyName);
currencyName.setText(“a”+位置);
ImageView currencyImage=(ImageView)convertView.findViewById(R.id.imageCurrencyCountry);
setImageResource(getImageId(m_上下文,“c”+m_list.get(position.name.toLowerCase());
if(m_list.get(position).checked){
setBackgroundResource(android.R.color.holo_green_dark);
}
否则{
convertView.setBackgroundResource(android.R.color.backgroundlight);
}
返回视图;
}
编辑:以下是活动的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/ListViewAllCurrencies"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.8">
    </ListView>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Apply"
            android:id="@+id/buttonAdd"
            android:layout_weight=".50"
            android:onClick="applyChange"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="Cancel"
            android:id="@+id/buttonCancel"
            android:layout_weight=".50"
            android:onClick="cancelChange"/>
    </LinearLayout>


</LinearLayout>

和addcurrency_项:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/imageCurrencyCountry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/cusd"
        android:contentDescription="" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textCurrencyName"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginStart="5dp"
            android:textSize="20sp"
            android:text="Currency name"/>
    </RelativeLayout>


</LinearLayout>

调试由
getImageId(m_上下文,“c”+m_list.get(position).name.toLowerCase()返回的int


它可能返回了0或-1,但没有在imageview中设置图像,并且视图已折叠!

听起来布局文件中存在问题。共享包含listview和按钮的布局文件。如果您使用的是相对布局,请在上面设置类似listview的布局\=“@+id/按钮布局id”。谢谢!用ImageView注释这些行解决了问题。