Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 向listview添加单选按钮_Android_Listview_Radio Button_Selection - Fatal编程技术网

Android 向listview添加单选按钮

Android 向listview添加单选按钮,android,listview,radio-button,selection,Android,Listview,Radio Button,Selection,我想在我现有的listview中添加一个单选按钮,这样一次只需要选择一个单选按钮 项目详情: public class ItemDetails { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getItemDescription() {

我想在我现有的listview中添加一个单选按钮,这样一次只需要选择一个单选按钮

项目详情:

public class ItemDetails {

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getItemDescription() {
        return itemDescription;
    }
    public void setItemDescription(String itemDescription) {
        this.itemDescription = itemDescription;
    }
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public int getImageNumber() {
        return imageNumber;
    }
    public void setImageNumber(int imageNumber) {
        this.imageNumber = imageNumber;
    }


    private String name ;
    private String itemDescription;
    private String price;
    private int imageNumber;

}
适配器:

    public class ItemListBaseAdapter extends BaseAdapter {
    private static ArrayList<ItemDetails> itemDetailsrrayList;

    private Integer[] imgid = {
            R.drawable.img1,
            R.drawable.img2,
            R.drawable.img3,
            R.drawable.img4,
            R.drawable.img5,
            R.drawable.img6
            };

    private LayoutInflater l_Inflater;
    public ItemListBaseAdapter(Context context, ArrayList<ItemDetails> results) {
        itemDetailsrrayList = results;
        l_Inflater = LayoutInflater.from(context);
    }

    public int getCount() {
        return itemDetailsrrayList.size();
    }

    public Object getItem(int position) {
        return itemDetailsrrayList.get(position);
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {

            convertView = l_Inflater.inflate(R.layout.item_details_view, null);
            holder = new ViewHolder();
            holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
            holder.txt_itemDescription = (TextView) convertView.findViewById(R.id.itemDescription);
            holder.txt_itemPrice = (TextView) convertView.findViewById(R.id.price);
            holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }




        holder.txt_itemName.setText(itemDetailsrrayList.get(position).getName());
        holder.txt_itemDescription.setText(itemDetailsrrayList.get(position).getItemDescription());
        holder.txt_itemPrice.setText(itemDetailsrrayList.get(position).getPrice());
        holder.itemImage.setImageResource(imgid[itemDetailsrrayList.get(position).getImageNumber() - 1]);
//      imageLoader.DisplayImage("http://192.168.1.28:8082/ANDROID/images/BEVE.jpeg", holder.itemImage);

        View row = convertView;

        CheckedTextView checkBox = (CheckedTextView) row.findViewById(R.id.checkstate);
        checkBox.setChecked(false);
        return convertView;
    }



    static class ViewHolder {
        TextView txt_itemName;
        TextView txt_itemDescription;
        TextView txt_itemPrice;
        ImageView itemImage;
        CheckedTextView checkBox;
    }
}

有人能告诉我怎么做吗?

对于复杂的
ListView
项目,您应该自己做。只需在
ItemDetails
中添加
boolean isSelected
,然后添加
checkBox.setChecked(item.isSelected)ItemListBaseAdapter
中的
getView()
中的code>。现在,当在
列表视图中单击某个项目时,只需更改
项目详细信息列表中的数据,然后调用
notifyDataSetChanged()
,我已经创建了我的getView()方法。只需创建单选按钮,而不是简单的按钮。我希望这能有所帮助

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

        View productListView = null;

        productListView = convertView;

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

        if (productListView == null)
        productListView = inflater.inflate(R.layout.menu_productlist_list,
                    parent, false);

        productListTitle = (TextView) productListView
                .findViewById(R.id.productListTitle);

        String title = menuProductListCollection.get(position).getPD_TITLE();

        productListTitle.setText(title);

        productListCategoryButton = (ImageButton) productListView
                .findViewById(R.id.productListCategoryButton);

        // Perform Button action on click of each row's button 
        productListCategoryButton.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View v) {
                // TODO Auto-generated method stub
            //do your stuff here
            }
            });     
                // Perform action on click of each row 
                   productListView.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View v) {
                // TODO Auto-generated method stub
            //do your stuff here
            }
            });     

     return productListView;
   }

我想你应该两个都试试

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
在需要添加的xml文件中

<ListView
    ...
    android:choiceMode="singleChoice"
    ... />
它会很有魅力的

检查这个

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

        View productListView = null;

        productListView = convertView;

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

        if (productListView == null)
        productListView = inflater.inflate(R.layout.menu_productlist_list,
                    parent, false);

        productListTitle = (TextView) productListView
                .findViewById(R.id.productListTitle);

        String title = menuProductListCollection.get(position).getPD_TITLE();

        productListTitle.setText(title);

        productListCategoryButton = (ImageButton) productListView
                .findViewById(R.id.productListCategoryButton);

        // Perform Button action on click of each row's button 
        productListCategoryButton.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View v) {
                // TODO Auto-generated method stub
            //do your stuff here
            }
            });     
                // Perform action on click of each row 
                   productListView.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View v) {
                // TODO Auto-generated method stub
            //do your stuff here
            }
            });     

     return productListView;
   }
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
<ListView
    ...
    android:choiceMode="singleChoice"
    ... />
<RadioButton
    ...
    android:clickable="false"
    android:focusable="false"
    ... />
for (HashMap<String, Object> m :list_data) //make data of this view should not be null (hide )
        m.put("checked", false);
adapter.setViewBinder(new SimpleAdapter.ViewBinder()
{
      public boolean setViewValue(View view, Object data, String textRepresentation)
      {
            if (data == null) //if 2nd line text is null, its textview should be hidden
            {
                view.setVisibility(View.GONE);
                return true;
            }
            view.setVisibility(View.VISIBLE);
            return false;
      }

});