android - 自定义列表适配器重复条目

标签 android listview listadapter

我正在尝试创建一个 ListView,它将使用数组中的条目进行填充。

所以这是我的项目布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="60dip" >  

    <ImageView android:id="@+id/list_item_image"
        android:layout_height="wrap_content"
        android:padding="2dip" 
        android:layout_gravity="center_vertical|center_horizontal" 
        android:layout_width="50dip"/>  
    <TextView android:id="@+id/list_item" 
        android:layout_height="fill_parent"
        android:textSize="25sp"
        android:layout_width="fill_parent" 
        android:ellipsize="marquee" 
        android:gravity="center_vertical" 
        android:padding="5dip" >
    </TextView>
</LinearLayout>

我尝试更改 LinearLayoutlayout_height,但遇到了一些问题。如果我将高度保持在 wrap_content,我的列表将显示正确的条目——项目 1、项目 2、项目 3 等等,直到项目 12。但是,如果我将高度更改为 60dip,条目在第六个条目之后重复(我得到第 1 项、第 2 项、第 3 项、第 4 项、第 5 项、第 6 项、第 1 项、第 2 项、第 3 项...)。如果我继续扩大它,条目会更频繁地重复。

这是我设置列表条目的 ListAdapter 的 fragment :

public View getView(int position, View convertView, ViewGroup parent) {

    LinearLayout layout;

    if (convertView == null){
         layout = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.items_list_item, parent, false);

         TextView title = (TextView) layout.findViewById(R.id.list_item);
         title.setText(menuItems[position]);

         ImageView icon = (ImageView) layout.findViewById(R.id.list_item_image);
         int logo = getResources().getIdentifier(menuIcons[position], "drawable", getPackageName());
         icon.setImageResource(logo);

    } else {
         layout = (LinearLayout) convertView;
    }
  return layout;
}

还有其他人遇到过这个问题吗?我不明白发生了什么,因为我认为它应该是直接从阵列中抓取。

编辑:包括我的整个 getView() 方法。请原谅获取图标的丑陋方式,我还没有弄清楚,

最佳答案

您没有发布足够的代码,但是在您的 Adapter 的 getView(...) 中尝试使用 convertView。

public View getView(int position, View convertView, ViewGroup parent){
   if(convertView == null){
      convertView = mInflater.inflate(R.layout.my_listitem_row, parent, false);
   }

   //...fill the TextViews on your layout

   return convertView;
}

获取图标应该很简单

icon.setImageResource(R.drawable.my_icon); //the res/drawable folder has the my_icon.png file

关于android - 自定义列表适配器重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499768/

相关文章:

android - Cordova 应用程序图标更改

java - 如何从图像转换为短字符串?

android - ListView 捕捉到项目

android - 后退后 ListView 中的重复值

Android:永久提升 View

android - Retrofit 2 with 协程调用适配器工厂取消请求

Android Listview 在适配器更改后保留旧项目

android - 如何为 ListView 中的项目生成动态数据

Android:每行中带有viewflipper的Listview onclick翻转更多行

Android:如何在按下列表项时避免按下 ListView 项中按钮的视觉效果