简体   繁体   English

在自定义ListView中重复值

[英]Repeating values in custom ListView

I'm using custom list view by using BaseAdapter every thing was working fine then I had to use the Viewholder for optimizing the listView. 我通过使用BaseAdapter来使用自定义列表视图, BaseAdapter都运行良好,然后必须使用Viewholder来优化listView。

Now every time I scroll my list view it shows up from 5 to 6 records every time. 现在,每次我滚动列表视图时,每次都会显示5到6条记录。 This is the code I am using: 这是我正在使用的代码:

Context context;
LayoutInflater inflater;
MainActivity main;
ArrayList<HashMap<String, String>> data;
HashMap<String, String> itemList;

static ImageLoader imageLoader;
Internholder holder;
String flight;
 View itemView ;
ImageView flag;
TextView flight_view,status_view;
TextView origin_item_view;
TextView expected_time_view,flight_item_view;
HashMap<String, String> resultp = new HashMap<String, String>();
List<String> values = new ArrayList<String>();

public khidomlistadapter(Context context,
        ArrayList<HashMap<String, String>> arraylist) {
    this.context = context;
    data = arraylist;

    imageLoader = new ImageLoader(context);
}

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

@Override
public Object getItem(int position) {
    return null;
}

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

public View getView(final int position, View convertView, ViewGroup parent) {
    // Declare Variables
    View v = convertView;
    Internholder holder;    
    if (v == null) {
    LayoutInflater vi = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


    v = vi.inflate(R.layout.listview_item, null);
    holder = new Internholder();
    holder.flight_item_view = (TextView) v.findViewById(R.id.flight);
    holder.origin_item_view = (TextView) v.findViewById(R.id.origin);
    holder.expected_time_view = (TextView) v.findViewById(R.id.expected);
    holder.status_view =(TextView) v.findViewById(R.id.status);
    // Locate the ImageView in listview_item.xml
    holder.flag = (ImageView) v.findViewById(R.id.flag);
    v.setTag(holder);

    }
    else
    {
        holder = (Internholder) v.getTag();
    }
    // Get the position


    resultp = data.get(position);

     //Capture position and set results to the ImageView
     //Passes flag images URL into ImageLoader.class
    holder.flight_item_view.setText(resultp.get("flight"));
    holder.origin_item_view.setText(resultp.get("origin"));
    holder.expected_time_view.setText(resultp.get("expected_time"));
    holder.status_view.setText(resultp.get("status"));
    imageLoader.DisplayImage(resultp.get("flag"), holder.flag);



    return v;
}

Can anyone point me out what I'm doing wrong? 谁能指出我做错了什么?

You can inflate your view like this 您可以像这样膨胀视图

v = inflater.inflate(R.layout.listview_item, parent, false);

may be this could help. 也许这可能会有所帮助。

You should have proper return values for the 2 overridden getters. 您应该为2个覆盖的getter提供适当的返回值。 Based on the rest of your code, this might work: 根据您的其余代码,这可能会起作用:

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM