Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Listview自定义适配器getView编号有限_Java_Android_Listview_Android Listview - Fatal编程技术网

Java Listview自定义适配器getView编号有限

Java Listview自定义适配器getView编号有限,java,android,listview,android-listview,Java,Android,Listview,Android Listview,这是我的android显示器的输出。实际上,我在listview中添加了21项,但只输出了9项。我没有对它的arrayadapter编号设置任何限制 01-05 20:44:23.368 5969-5969/? I/System.out: getView 0 null 01-05 20:44:23.378 5969-5969/? I/System.out: getView 1 null 01-05 20:44:23.388 5969-5969/? I/System.out: getView 2

这是我的android显示器的输出。实际上,我在listview中添加了21项,但只输出了9项。我没有对它的arrayadapter编号设置任何限制

01-05 20:44:23.368 5969-5969/? I/System.out: getView 0 null
01-05 20:44:23.378 5969-5969/? I/System.out: getView 1 null
01-05 20:44:23.388 5969-5969/? I/System.out: getView 2 null
01-05 20:44:23.398 5969-5969/? I/System.out: getView 3 null
01-05 20:44:23.408 5969-5969/? I/System.out: getView 4 null
01-05 20:44:23.418 5969-5969/? I/System.out: getView 5 null
01-05 20:44:23.438 5969-5969/? I/System.out: getView 6 null
01-05 20:44:23.448 5969-5969/? I/System.out: getView 7 null
01-05 20:44:23.458 5969-5969/? I/System.out: getView 8 null
01-05 20:44:23.488 5969-5969/? I/System.out: getView 0 android.widget.LinearLayout{41bb18f8 V.E..... ......ID 0,0-432,72}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 1 android.widget.LinearLayout{41bb5708 V.E..... ......ID 0,73-432,145}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 2 android.widget.LinearLayout{41bb9318 V.E..... ......ID 0,146-432,218}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 3 android.widget.LinearLayout{41bbcf28 V.E..... ......ID 0,219-432,291}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 4 android.widget.LinearLayout{41bc0b38 V.E..... ......ID 0,292-432,364}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 5 android.widget.LinearLayout{41bc4748 V.E..... ......ID 0,365-432,437}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 6 android.widget.LinearLayout{41bc8358 V.E..... ......ID 0,438-432,510}
01-05 20:44:23.488 5969-5969/? I/System.out: getView 7 android.widget.LinearLayout{41bcbf68 V.E..... ......ID 0,511-432,583}
MyCustomAdapter.java 这是我的自定义适配器类

public class MyCustomAdapter extends BaseAdapter {

public ArrayList<PackingItem> packingItems;
Context context;
LayoutInflater layoutInflater;
int count;

public MyCustomAdapter(Context context, int textViewResourceId,
                       ArrayList<PackingItem> countryList) {
    this.context = context;
    this.packingItems = countryList;
    this.packingItems.addAll(countryList);
    layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

private class ViewHolder {
    CheckBox name;
    public TextView number_text;
    public Button plus;
    public Button minus;
}

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

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

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

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

    ViewHolder holder = null;
    Log.v("ConvertView", String.valueOf(position));
    System.out.println("getView " + position + " " + convertView);

    if (convertView == null) {
        //convertView = vi.inflate(R.layout.item_info, null);

        holder = new ViewHolder();
        convertView = layoutInflater.inflate(R.layout.item_info,parent,false);
        holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1);
        holder.number_text= (TextView) convertView.findViewById(R.id.number_text);
        convertView.setTag(holder);

        holder.number_text.setText(String.valueOf(count));
        holder.plus = (Button) convertView.findViewById(R.id.plus);
        final ViewHolder finalHolder = holder;
        holder.plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (count>=0) {
                    count++;
                }
                finalHolder.number_text.setText(String.valueOf(count));
            }
        });

        holder.minus = (Button) convertView.findViewById(R.id.minus);
        holder.minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (count > 0) {
                    count--;

                } else {
                    if (count <= 0) {
                        count = 0;
                    }
                    finalHolder.number_text.setText(" ");
                }
                finalHolder.number_text.setText(String.valueOf(count));

            }
        });

        holder.name.setOnClickListener( new View.OnClickListener() {
            public void onClick(View v) {
                CheckBox cb = (CheckBox) v ;
                PackingItem packingItem = (PackingItem) cb.getTag();
                Toast.makeText(context,
                        "Clicked on Checkbox: " + cb.getText() +
                                " is " + cb.isChecked() + " " + packingItem.getNumber(),
                        Toast.LENGTH_LONG).show();
                packingItem.setSelected(cb.isChecked());
                packingItem.setNumber(finalHolder.number_text.getText().toString());
            }
        });
    }






    else {
        holder = (ViewHolder) convertView.getTag();
    }

    PackingItem packingItem = packingItems.get(position);
    holder.name.setText(packingItem.getName());
    holder.name.setChecked(packingItem.isSelected());
    holder.name.setTag(packingItem);
    holder.number_text.setTag(packingItem);

    return convertView;

}
公共类MyCustomAdapter扩展了BaseAdapter{
公共ArrayList打包项目;
语境;
LayoutInflater LayoutInflater;
整数计数;
公共MyCustomAdapter(上下文,int textViewResourceId,
ArrayList国家列表){
this.context=上下文;
this.packingItems=国家列表;
此.packingItems.addAll(国家列表);
layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
}
私有类视窗持有者{
复选框名称;
公共文本视图编号\u文本;
公共按钮加;
公共按钮减号;
}
@凌驾
public int getCount(){
返回packingItems.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
Log.v(“ConvertView”,String.valueOf(position));
System.out.println(“getView”+位置+“”+转换视图);
if(convertView==null){
//convertView=vi.充气(R.布局.项目信息,空);
holder=新的ViewHolder();
convertView=LayoutFlater.充气(R.layout.item_信息,父项,false);
holder.name=(复选框)convertView.findViewById(R.id.checkBox1);
holder.number\u text=(TextView)convertView.findViewById(R.id.number\u text);
convertView.setTag(支架);
holder.number_text.setText(String.valueOf(count));
holder.plus=(按钮)convertView.findViewById(R.id.plus);
最终视图持有者finalHolder=持有者;
holder.plus.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(计数>=0){
计数++;
}
finalHolder.number_text.setText(String.valueOf(count));
}
});
holder.减号=(按钮)convertView.findViewById(R.id.减号);
holder.减号.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(计数>0){
计数--;
}否则{

如果(count自定义列表适配器的实现不正确 下面是我的custim适配器的一个示例

public class ResultListAdapter extends BaseAdapter{
    Context context;
    UsersMain values;
    LayoutInflater layoutInflater;
    public ResultListAdapter(Context context,UsersMain values){
        this.context=context;
        this.values=values;
        layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return values.getNearestUsers().size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder = null;
        if(convertView==null){
            viewHolder= new ViewHolder();
            convertView=layoutInflater.inflate(R.layout.match_list_item,parent,false);
            viewHolder.username=(TextView)convertView.findViewById(R.id.userResquestTv);
            convertView.setTag(viewHolder);
        }
        else {
            viewHolder=(ViewHolder)convertView.getTag();
        }
        viewHolder.username.setText(values.getNearestUsers().get(position).getName());
        return convertView;
    }
    public static class ViewHolder{
        public TextView username;
    }
}

遵循此操作。希望有帮助。

我认为您缺少getCount()方法。重写该方法并返回list.Size()。希望有帮助。

但是我没有使用基本适配器,我可以使用Override getCount()吗?是的,如果您正在使用studio,您可以重写方法,按alt+insert并选择generate override methods,然后将看到可用方法的列表。我认为他不需要getCount()对于ArrayAdapter。唯一重要的是适配器的
packingItems
必须大于0。我可以知道为什么前9个值将变为null吗?将此值写入构造函数中。packingItems=countryList;并删除此值。packingItems=new ArrayList();this.packingItems.addAll(countryList);仍然没有工作,我已经按照你的代码做了,我已经再次上传了我的代码
public class ResultListAdapter extends BaseAdapter{
    Context context;
    UsersMain values;
    LayoutInflater layoutInflater;
    public ResultListAdapter(Context context,UsersMain values){
        this.context=context;
        this.values=values;
        layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return values.getNearestUsers().size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder = null;
        if(convertView==null){
            viewHolder= new ViewHolder();
            convertView=layoutInflater.inflate(R.layout.match_list_item,parent,false);
            viewHolder.username=(TextView)convertView.findViewById(R.id.userResquestTv);
            convertView.setTag(viewHolder);
        }
        else {
            viewHolder=(ViewHolder)convertView.getTag();
        }
        viewHolder.username.setText(values.getNearestUsers().get(position).getName());
        return convertView;
    }
    public static class ViewHolder{
        public TextView username;
    }
}