【问题标题】:Listview not adding 100th item from arraylist in android?Listview没有从android中的arraylist添加第100个项目?
【发布时间】:2014-07-28 06:07:29
【问题描述】:

我有 arraylist。arraylist 的大小是 156。当我运行 for 循环时,它运行了 156 次并将所有值添加到另一个 arraylist。但是当我将此 arraylist 设置为适配器适配器时,需要 156 个项目但是当我设置适配器到 listview 那个时候 Listview 只需要 98 个项目。

当我调试时,我看到 arralist 大小为 156.and arraylist 分为像

这样的集合

0-99 100-199 200-210

见下图:

这里我的适配器只占用 0-99 个项目。如何将 100-199 个集合项目添加到 Listview 中。

编辑#1:

适配器类:

public class AllserversListAdapter extends BaseAdapter implements OnClickListener {

    Activity mActivity;
    ArrayList<AllServers> mAllServersArray;
    private static LayoutInflater mInflater = null;
    ArrayList<MyFavorites> mFavoriteServers;

    public AllserversListAdapter(Activity activity,
            ArrayList<AllServers> allServers,
            ArrayList<MyFavorites> favoriteServers) {
        // TODO Auto-generated constructor stub

        mActivity = activity;
        mAllServersArray = allServers;

        mFavoriteServers = favoriteServers;

        mInflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mAllServersArray.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    ViewHolder holder;

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi = convertView;

        if (vi == null) {

            /****** Inflate list items layout file for each row ( Defined below ) *******/
            vi = mInflater.inflate(R.layout.servers_list_items, null);

            /****** View Holder Object to contain list items file elements ******/

            holder = new ViewHolder();
            holder.serverName = (TextView) vi
                    .findViewById(R.id.server_items_country_name_textview);
            holder.speed = (TextView) vi
                    .findViewById(R.id.server_items_speed_textview);
            holder.speedTitleTextView = (TextView) vi
                    .findViewById(R.id.speed_title_textview);
            holder.flag = (ImageView) vi.findViewById(R.id.server_flag_image);
            holder.star = (ImageView) vi.findViewById(R.id.server_items_star);
            holder.bodyLayout = (LinearLayout) vi
                    .findViewById(R.id.servere_items_boady_layout);
            holder.speedBackgroundLayout = (LinearLayout) vi
                    .findViewById(R.id.speed_backround_layout);
            holder.itemsParentLayout = (LinearLayout) vi
                    .findViewById(R.id.server_list_items_parentlayout);
            holder.itemsParentLayout.setBackgroundColor(mActivity
                    .getResources().getColor(R.color.light_gray));
            holder.bodyLayout.setBackgroundColor(mActivity.getResources()
                    .getColor(R.color.dark_gray_black));
            holder.star.setOnClickListener(this);
            /************ Set holder with LayoutInflater ************/
            vi.setTag(holder);

            holder.star.setTag(position);
            holder.flag.setTag(position);
        } else {
            holder = (ViewHolder) vi.getTag();
        }
        String ip = mAllServersArray.get(position).getIp();

        String country = mAllServersArray.get(position).getCountry();
        String region = mAllServersArray.get(position).getRegion();
        String speed = mAllServersArray.get(position).getSpeed();
        String flagCountryCode = mAllServersArray.get(position)
                .getCountrycode();

        int ipSpeed = Integer.valueOf(speed);


            holder.speedTitleTextView.setVisibility(View.GONE);
            holder.speed.setText("TimeOut");
            holder.speed.setTypeface(Typeface.DEFAULT);
            holder.speed.setPadding(26, 0, 26, 0);
            holder.speedBackgroundLayout.setBackgroundColor(mActivity
                    .getResources().getColor(R.color.time_out_color));

        holder.serverName.setText(country + "\n" + region + "\n" + ip);

        return vi;
    }
}

将项目添加到数组列表中:

任何人都给我建议。

【问题讨论】:

  • 能发一下代码吗?
  • 关闭适配器或将项目添加到arraylist?
  • 如果你给出了完整的代码,我认为哪个更好地解决你的问题。
  • “分为集合的东西”是 Eclipse 的调试器所做的,而不是您的程序所做的。这样做是为了让您不必滚动浏览所有条目,如果您想找到一个特定的条目。
  • @Haresh 请检查我的编辑。

标签: java android listview arraylist adapter


【解决方案1】:

试试这个方法,希望能帮助你解决问题。

public class AllserversListAdapter extends BaseAdapter{

    Context context;
    ArrayList<AllServers> allServers;
    ArrayList<MyFavorites> favoriteServers;

    public AllserversListAdapter(Context context,ArrayList<AllServers> allServers,ArrayList<MyFavorites> favoriteServers) {
        this.context = context;
        this.allServers = allServers;
        this.favoriteServers = favoriteServers;
    }

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

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

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


    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(context).inflate(R.layout.servers_list_items, null);
            holder.serverName = (TextView) convertView.findViewById(R.id.server_items_country_name_textview);
            holder.speed = (TextView) convertView.findViewById(R.id.server_items_speed_textview);
            holder.speedTitleTextView = (TextView) convertView.findViewById(R.id.speed_title_textview);
            holder.flag = (ImageView) convertView.findViewById(R.id.server_flag_image);
            holder.star = (ImageView) convertView.findViewById(R.id.server_items_star);
            holder.bodyLayout = (LinearLayout) convertView.findViewById(R.id.servere_items_boady_layout);
            holder.speedBackgroundLayout = (LinearLayout) convertView.findViewById(R.id.speed_backround_layout);
            holder.itemsParentLayout = (LinearLayout) convertView.findViewById(R.id.server_list_items_parentlayout);
            holder.itemsParentLayout.setBackgroundColor(mActivity.getResources().getColor(R.color.light_gray));
            holder.bodyLayout.setBackgroundColor(mActivity.getResources().getColor(R.color.dark_gray_black));
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        String ip = mAllServersArray.get(position).getIp();

        holder.speedTitleTextView.setVisibility(View.GONE);
        holder.speed.setText("TimeOut");
        holder.speed.setTypeface(Typeface.DEFAULT);
        holder.speed.setPadding(26, 0, 26, 0);
        holder.speedBackgroundLayout.setBackgroundColor(mActivity
                .getResources().getColor(R.color.time_out_color));

        holder.serverName.setText(mAllServersArray.get(position).getCountry() + "\n" + mAllServersArray.get(position).getRegion() + "\n" + ip);

        holder.flag.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // try use (position) value to check which list item click.
            }
        });
        holder.star.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // try use (position) value to check which list item click.
            }
        });
        return convertView;
    }

    class ViewHolder {
        TextView serverName;
        TextView speed;
        TextView speedTitleTextView;
        ImageView flag;
        ImageView star;
        LinearLayout bodyLayout;
        LinearLayout speedBackgroundLayout;
        LinearLayout itemsParentLayout;
    }

}

【讨论】:

  • 实际上在应用程序中我正在使用 Customlistview(NestedListView) 并且我在 scrollview 中添加了这个 listview。实际上我想用 lisview 滚动我的整个布局,这就是我在 scrollview 中添加 listview 的原因。我认为这是当我滚动这个问题时,我的整个滚动视图数据滚动并且nestedlistview getview() 没有调用。我该如何解决这个问题?
  • 首先你不能把listview放在滚动视图里面。
猜你喜欢
  • 2015-10-09
  • 2016-12-27
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多