Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Android:从Android中的类创建的新对象正在被旧对象替换_Android_Class_Object_Replace_New Operator - Fatal编程技术网

Android:从Android中的类创建的新对象正在被旧对象替换

Android:从Android中的类创建的新对象正在被旧对象替换,android,class,object,replace,new-operator,Android,Class,Object,Replace,New Operator,这是我的课 public class ListItem { private String title, subtitle; private int itemImageResourceId; public ListItem (String mtitle, String msubtitle, int mitemImageResourceId){ title = mtitle; subtitle = msubtitle; ite

这是我的课

public class ListItem {
    private String title, subtitle;
    private int itemImageResourceId;

    public ListItem (String mtitle, String msubtitle, int mitemImageResourceId){
        title = mtitle;
        subtitle = msubtitle;
        itemImageResourceId = mitemImageResourceId;
    }

    public String gettitle() {
        return title;
    }

    public String getsubtitle() {
        return subtitle;
    }

    public int getitemImageResourceId() {
        return itemImageResourceId;
    }
}
这就是我创建对象并将其输入数组列表的方式

ListItem myObject = new ListItem("Title 1", "Sub Title 1", R.drawable.img1);
ListItem myObject2 = new ListItem("Title 2", "Sub Title 2", R.drawable.img2);
ListItem myObject3 = new ListItem("Title 3", "Sub Title 4", R.drawable.img3);
ListItem myObject4 = new ListItem("Title 4", "Sub Title 4", R.drawable.img4);
ListItem myObject5 = new ListItem("Title 5", "Sub Title 5", R.drawable.img5);
ListItem myObject6 = new ListItem("Title 6", "Sub Title 6", R.drawable.img1);
ListItem myObject7 = new ListItem("Title 7", "Sub Title 7", R.drawable.img2);
ListItem myObject8 = new ListItem("Title 8", "Sub Title 8", R.drawable.img4);
ListItem myObject9 = new ListItem("Title 9", "Sub Title 9", R.drawable.img5);
ArrayList<ListItem> mylistview = new ArrayList<ListItem>(
Arrays.asList(myObject, myObject2, myObject3, myObject4, myObject5, myObject6, myObject7, myObject8, myObject9));
ListItem myObject=新的ListItem(“标题1”,“子标题1”,R.drawable.img1);
ListItem MyObject 2=新的ListItem(“标题2”,“子标题2”,R.drawable.img2);
ListItem MyObject 3=新的ListItem(“标题3”,“子标题4”,R.drawable.img3);
ListItem MyObject 4=新的ListItem(“标题4”,“子标题4”,R.drawable.img4);
ListItem MyObject 5=新的ListItem(“标题5”,“子标题5”,R.drawable.img5);
ListItem MyObject 6=新的ListItem(“标题6”,“子标题6”,R.drawable.img1);
ListItem MyObject 7=新的ListItem(“标题7”,“子标题7”,R.drawable.img2);
ListItem myObject8=新的ListItem(“标题8”,“子标题8”,R.drawable.img4);
ListItem myObject9=新的ListItem(“标题9”,“子标题9”,R.drawable.img5);
ArrayList mylistview=新建ArrayList(
asList(myObject,myObject2,myObject3,myObject4,myObject5,myObject6,myObject7,myObject8,myObject9);
但每次我运行代码时,显示的列表视图中的第9项都会显示第一项的值。我不知道;我不知道为什么从这个类创建的新对象会被旧对象替换?有人请帮忙,我已经试着修了6个小时了

适配器代码

public class MyListView extends ArrayAdapter<ListItem> {
    //private static final String LOG_TAG = ListItem.class.getSimpleName();
    Context mContext;
    int mResource;
    ArrayList<ListItem> mobjects;

    public MyListView(Context context, int resource, ArrayList<ListItem> objects) {
        super(context, resource, objects);
        mContext = context;
        mResource = resource;
        mobjects = objects;
    }
    public static class ViewHolder{
        RelativeLayout _layout;
        ImageView _selicon;
        TextView _seltitle;
        TextView _selsubtitle;
        ImageButton _selimgbutton;
    }

    public View getView(int position, View view, ViewGroup parent) {
        View listItemView = view;
        final ViewHolder holder;
        if(listItemView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            listItemView = inflater.inflate(mResource, parent,false);
            holder = new ViewHolder();
            holder._layout = listItemView.findViewById(R.layout.my_list);

            ListItem currentitem = getItem(position);

            holder._selicon = listItemView.findViewById(R.id.icon);
            holder._seltitle = listItemView.findViewById(R.id.title);
            holder._selsubtitle = listItemView.findViewById(R.id.subtitle);
            holder._selimgbutton = listItemView.findViewById(R.id.imgbutton);

            holder._seltitle.setText(currentitem.gettitle());
            holder._selicon.setImageResource(currentitem.getitemImageResourceId());
            holder._selsubtitle.setText(currentitem.getsubtitle());

            holder._selimgbutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //Toast.makeText(mContext, holder._seltitle.getText().toString(), Toast.LENGTH_SHORT).show();
                    PopupMenu popup = new PopupMenu(mContext, holder._selimgbutton);
                    popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());

                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {
                            if (item.getTitle().equals("Good")) {
                                Toast.makeText(mContext, "You Clicked Good: " + holder._seltitle.getText(), Toast.LENGTH_SHORT).show();
                            }else if (item.getTitle().equals("Bad")){
                                Toast.makeText(mContext, "You Clicked Bad: " + holder._seltitle.getText(), Toast.LENGTH_SHORT).show();
                            }else {
                                return onMenuItemClick(item);
                            }
                            return true;
                        }
                    });

                    popup.show();
                }
            });
            listItemView.setTag(holder);
        }else{
            holder = (ViewHolder) listItemView.getTag();
        }

        return listItemView;
    }

}
公共类MyListView扩展了ArrayAdapter{
//私有静态最终字符串LOG_TAG=ListItem.class.getSimpleName();
语境;
国际资源;
数组列表对象;
公共MyListView(上下文、int资源、ArrayList对象){
超级(上下文、资源、对象);
mContext=上下文;
mResource=资源;
mobjects=对象;
}
公共静态类视图持有者{
相对布局;
ImageView _selicon;
TextView _seltitle;
文本视图_选择字幕;
图像按钮选择按钮;
}
公共视图getView(内部位置、视图视图、视图组父视图){
视图listItemView=视图;
最终持票人;
如果(listItemView==null){
LayoutFlater充气机=LayoutFlater.from(mContext);
listItemView=充气机。充气(mResource,父项,false);
holder=新的ViewHolder();
holder.\u layout=listItemView.findViewById(R.layout.my\u list);
ListItem currentitem=getItem(位置);
holder._selicon=listItemView.findViewById(R.id.icon);
holder._seltitle=listItemView.findViewById(R.id.title);
holder.\u selstitle=listItemView.findViewById(R.id.subtitle);
holder._selimgbutton=listItemView.findViewById(R.id.imgbutton);
holder._selttitle.setText(currentitem.gettitle());
holder._selicon.setImageResource(currentitem.getitemImageResourceId());
holder._selsubtitle.setText(currentitem.getsubtitle());
holder._selimgbutton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//Toast.makeText(mContext,holder._selttitle.getText().toString(),Toast.LENGTH_SHORT).show();
PopupMenu popup=新的PopupMenu(mContext,holder.\u selimgbutton);
popup.getMenuInflater().充气(R.menu.poupp_菜单,popup.getMenu());
setOnMenuItemClickListener(新的PopupMenu.OnMenuItemClickListener(){
公共布尔onMenuItemClick(菜单项){
if(item.getTitle().equals(“Good”)){
Toast.makeText(mContext,“您点击的很好:+holder.\u selttitle.getText(),Toast.LENGTH\u SHORT.show();
}else if(item.getTitle().equals(“Bad”)){
Toast.makeText(mContext,“您点击的错误:+holder.\u selttitle.getText(),Toast.LENGTH\u SHORT.show();
}否则{
返回菜单项单击(项目);
}
返回true;
}
});
popup.show();
}
});
setTag(持有者);
}否则{
holder=(ViewHolder)listItemView.getTag();
}
返回listItemView;
}
}

您可以这样添加吗?=-

ListItem myObject = new ListItem("Title 1", "Sub Title 1", R.drawable.img1);
        ListItem myObject2 = new ListItem("Title 2", "Sub Title 2", R.drawable.img2);
        ListItem myObject3 = new ListItem("Title 3", "Sub Title 4", R.drawable.img3);
        ListItem myObject4 = new ListItem("Title 4", "Sub Title 4", R.drawable.img4);
        ListItem myObject5 = new ListItem("Title 5", "Sub Title 5", R.drawable.img5);
        ListItem myObject6 = new ListItem("Title 6", "Sub Title 6", R.drawable.img1);
        ListItem myObject7 = new ListItem("Title 7", "Sub Title 7", R.drawable.img2);
        ListItem myObject8 = new ListItem("Title 8", "Sub Title 8", R.drawable.img4);
        ListItem myObject9 = new ListItem("Title 9", "Sub Title 9", R.drawable.img5);
        ArrayList<ListItem> mylistview = new ArrayList<ListItem>(
       mylistview.add(myObject)
       mylistview.add(myObject2)
       mylistview.add(myObject3)
       mylistview.add(myObject4)
       mylistview.add(myObject5)
       mylistview.add(myObject6)
       mylistview.add(myObject7)
       mylistview.add(myObject8)
       mylistview.add(myObject9)
ListItem myObject=新的ListItem(“标题1”,“子标题1”,R.drawable.img1);
ListItem MyObject 2=新的ListItem(“标题2”,“子标题2”,R.drawable.img2);
ListItem MyObject 3=新的ListItem(“标题3”,“子标题4”,R.drawable.img3);
ListItem MyObject 4=新的ListItem(“标题4”,“子标题4”,R.drawable.img4);
ListItem MyObject 5=新的ListItem(“标题5”,“子标题5”,R.drawable.img5);
ListItem MyObject 6=新的ListItem(“标题6”,“子标题6”,R.drawable.img1);
ListItem MyObject 7=新的ListItem(“标题7”,“子标题7”,R.drawable.img2);
ListItem myObject8=新的ListItem(“标题8”,“子标题8”,R.drawable.img4);
ListItem myObject9=新的ListItem(“标题9”,“子标题9”,R.drawable.img5);
ArrayList mylistview=新建ArrayList(
mylistview.add(myObject)
mylistview.add(myObject2)
mylistview.add(myObject3)
mylistview.add(myObject4)
mylistview.add(myObject5)
mylistview.add(myObject6)
mylistview.add(myObject7)
mylistview.add(myObject8)
mylistview.add(myObject9)

您忘记了设置支架值,以防从标签中取出:

public View getView(int position, View view, ViewGroup parent) {
        View listItemView = view;
        final ViewHolder holder;
        final ListItem currentitem = getItem(position);

        if (listItemView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            listItemView = inflater.inflate(mResource, parent,false);
            holder = new ViewHolder();
            holder._layout = listItemView.findViewById(R.layout.my_list);

            

            holder._selicon = listItemView.findViewById(R.id.icon);
            holder._seltitle = listItemView.findViewById(R.id.title);
            holder._selsubtitle = listItemView.findViewById(R.id.subtitle);
            holder._selimgbutton = listItemView.findViewById(R.id.imgbutton);

            holder._seltitle.setText(currentitem.gettitle());
            holder._selicon.setImageResource(currentitem.getitemImageResourceId());
            holder._selsubtitle.setText(currentitem.getsubtitle());

            holder._selimgbutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //Toast.makeText(mContext, holder._seltitle.getText().toString(), Toast.LENGTH_SHORT).show();
                    PopupMenu popup = new PopupMenu(mContext, holder._selimgbutton);
                    popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());

                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {
                            if (item.getTitle().equals("Good")) {
                                Toast.makeText(mContext, "You Clicked Good: " + holder._seltitle.getText(), Toast.LENGTH_SHORT).show();
                            }else if (item.getTitle().equals("Bad")){
                                Toast.makeText(mContext, "You Clicked Bad: " + holder._seltitle.getText(), Toast.LENGTH_SHORT).show();
                            }else {
                                return onMenuItemClick(item);
                            }
                            return true;
                        }
                    });

                    popup.show();
                }
            });
            listItemView.setTag(holder);
        } else {
            holder = (ViewHolder) listItemView.getTag();
            holder._seltitle.setText(currentitem.gettitle());
            holder._selicon.setImageResource(currentitem.getitemImageResourceId());
            holder._selsubtitle.setText(currentitem.getsubtitle());

            holder._selimgbutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //Toast.makeText(mContext, holder._seltitle.getText().toString(), Toast.LENGTH_SHORT).show();
                    PopupMenu popup = new PopupMenu(mContext, holder._selimgbutton);
                    popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());

                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {
                            if (item.getTitle().equals("Good")) {
                                Toast.makeText(mContext, "You Clicked Good: " + holder._seltitle.getText(), Toast.LENGTH_SHORT).show();
                            }else if (item.getTitle().equals("Bad")){
                                Toast.makeText(mContext, "You Clicked Bad: " + holder._seltitle.getText(), Toast.LENGTH_SHORT).show();
                            }else {
                                return onMenuItemClick(item);
                            }
                            return true;
                        }
                    });

                    popup.show();
                }
            });
        }

        return listItemView;
    }

发布您的适配器代码我已经更新了适配器代码