如何在listview android java中选择多个项目

如何在listview android java中选择多个项目,java,android,android-listview,Java,Android,Android Listview,我试图从列表视图中选择多个项目,当选择这些项目时,每个项目都会被赋予一个唯一的id 这是迄今为止我的适配器类: public class CallDisplay extends ArrayAdapter<String>{ private final Context context; private final List values; public CallDisplay(Context context, List values) {

我试图从列表视图中选择多个项目,当选择这些项目时,每个项目都会被赋予一个唯一的id

这是迄今为止我的适配器类:

public class CallDisplay extends ArrayAdapter<String>{
        private final Context context;
        private final List values;

        public CallDisplay(Context context, List values) {
            super(context, R.layout.product_list, values);
            this.context = context;
            this.values = values;
        }




        class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
            ImageView bmImage;

            public DownloadImageTask(ImageView bmImage) {
                this.bmImage = bmImage;
            }

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();
            }

            protected Bitmap doInBackground(String... urls) {
                String urldisplay = urls[0];
                Bitmap mIcon11 = null;
                try {
                  InputStream in = new java.net.URL(urldisplay).openStream();
                  mIcon11 = BitmapFactory.decodeStream(in);
                } catch (Exception e) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                }
                return mIcon11;
            }

            @Override 
            protected void onPostExecute(Bitmap result) {
                super.onPostExecute(result);
                bmImage.setImageBitmap(result);
            }
          }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View rowView = inflater.inflate(R.layout.product_list, parent, false);
            TextView Name = (TextView) rowView.findViewById(R.id.name);
            TextView Desc = (TextView) rowView.findViewById(R.id.description);
            TextView Price = (TextView)rowView.findViewById(R.id.price);
            TextView ebaylink = (TextView)rowView.findViewById(R.id.elink);
            ImageView imageView = (ImageView) rowView.findViewById(R.id.prod_image);
            TextView id = (TextView)rowView.findViewById(R.id.id);

            id.setText(((HashMap<String, String>)values.get(position)).get("id"));
            Name.setText(((HashMap<String, String>)values.get(position)).get("name"));  
            Desc.setText(((HashMap<String, String>)values.get(position)).get("desc"));
            Price.setText(((HashMap<String, String>)values.get(position)).get("price"));
            ebaylink.setText(((HashMap<String, String>)values.get(position)).get("elink"));
            new DownloadImageTask(imageView).execute(((HashMap<String, String>)values.get(position)).get("photo"));

            //imageView.setImageBitmap("http://www.digitaltrends.com/wp-content/uploads/2013/04/Samsung-Galaxy-6-3-sample-image-3.jpg");

            return rowView;
        }
公共类调用显示扩展了ArrayAdapter{
私人最终语境;
私有最终列表值;
公共调用显示(上下文、列表值){
super(上下文、R.layout.product_列表、值);
this.context=上下文;
这个值=值;
}
类DownloadImageTask扩展了AsyncTask{
图像视图bmImage;
公共下载ImageTask(ImageView bmImage){
this.bmImage=bmImage;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
受保护位图doInBackground(字符串…URL){
字符串urldisplay=url[0];
位图mIcon11=null;
试一试{
InputStream in=newjava.net.URL(urldisplay.openStream();
mIcon11=BitmapFactory.decodeStream(in);
}捕获(例外e){
Log.e(“Error”,e.getMessage());
e、 printStackTrace();
}
返回mIcon11;
}
@凌驾
受保护的void onPostExecute(位图结果){
super.onPostExecute(结果);
bmImage.setImageBitmap(结果);
}
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.product\u列表,父项,false);
TextView Name=(TextView)rowView.findViewById(R.id.Name);
TextView Desc=(TextView)rowView.findViewById(R.id.description);
TextView价格=(TextView)rowView.findViewById(R.id.Price);
TextView ebaylink=(TextView)rowView.findViewById(R.id.elink);
ImageView ImageView=(ImageView)rowView.findViewById(R.id.prod_image);
TextView id=(TextView)rowView.findViewById(R.id.id);
id.setText(((HashMap)values.get(position)).get(“id”);
Name.setText(((HashMap)values.get(position)).get(“Name”);
Desc.setText(((HashMap)values.get(position)).get(“Desc”));
Price.setText(((HashMap)values.get(position)).get(“Price”);
ebaylink.setText(((HashMap)values.get(position)).get(“elink”);
新下载的ImageTask(imageView).execute(((HashMap)values.get(position)).get(“photo”);
//imageView.setImageBitmap(“http://www.digitaltrends.com/wp-content/uploads/2013/04/Samsung-Galaxy-6-3-sample-image-3.jpg");
返回行视图;
}
}

如何编辑它,以便在选择多个项目时,每个项目都有一个唯一的id号?谢谢你使用并传递它。然后你可以打电话


适配器还应该实现
getItemId(位置)
。如果没有其他内容,您只需返回
position
参数本身,这样根据适配器,至少所有项目都将具有不同的ID。

您是否已经有多个选择工作,或者您是否需要首先知道如何允许用户选择多个项目,那么如何确保每个项目都有一个唯一的ID呢?我添加时出于某种原因:lv.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);它甚至不会标记/突出显示列表中的项目。为什么会这样?根据您提供的代码,我没有足够的信息告诉您为什么会发生这种情况。