【问题标题】:How to get text on selected checkbox from listview in android如何从android中的listview获取选定复选框上的文本
【发布时间】:2017-04-16 14:48:14
【问题描述】:

我正在研究 android 示例,当我单击复选框时,它每次都会获取 listview 中第一项(位置)的 textviews 值。所以但我想获得选定(位置)复选框文本视图值的值。如何解决它请帮助。我是一个新人。谢谢提前。

BaseAdapter 类中的一些代码

 public View getView(int position, View convertView, ViewGroup parent)
{
    ViewItem viewItem = null;
    if(convertView == null)
    {
        viewItem = new ViewItem();
        LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        //LayoutInflater layoutInfiater = LayoutInflater.from(context);
        convertView = layoutInfiater.inflate(R.layout.list_adapter_view, null);

        viewItem.txtTitle = (TextView)convertView.findViewById(R.id.inactivelistview);
       // viewItem.txtDescription = (TextView)convertView.findViewById(R.id.adapter_text_description);
        convertView.setTag(viewItem);
    }
    else
    {
        viewItem = (ViewItem) convertView.getTag();
    }

    viewItem.txtTitle.setText(valueList.get(position).username);
   // viewItem.txtDescription.setText(valueList.get(position).cources_description);

    return convertView;
}

活动中的一些代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_get_in_active_list);

    listCollege = (ListView)findViewById(R.id.listCollege);
    proCollageList = (ProgressBar)findViewById(R.id.proCollageList);

    checkbox = (CheckBox)findViewById(R.id.checkbox_me);

    button  =(Button)findViewById(R.id.button1);
    new GetHttpResponse(this).execute();
}


public void onCheckboxClicked(View view) {

    boolean checked = ((CheckBox) view).isChecked();

    switch(view.getId()) {
        case R.id.checkbox_me:
            if (checked) {

                username = (TextView)findViewById(R.id.inactivelistview);

                Username =username.getText().toString();
                System.out.println("print username_=== "+Username);
                AlertDialog.Builder alertbox = new AlertDialog.Builder(this);

                alertbox.setMessage("Do you want activate "+Username+"?");

                alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface arg0, int arg1) {
                        Toast.makeText(getApplicationContext(), Username+" acivated", Toast.LENGTH_SHORT).show();
                    }

                });

                alertbox.setNegativeButton("No", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface arg0, int arg1) {
                        Toast.makeText(getApplicationContext(), "'No' button clicked", Toast.LENGTH_SHORT).show();
                    }
                });
               alertbox.show();
            } else
                break;
    }

我每次都在列表视图中获取第一项(位置)的文本视图值。 请帮我解决。帮我更新我的代码 非常感谢......

【问题讨论】:

  • 复选框在您的活动中还是在列表视图中?
  • 复选框在列表视图中

标签: android listview checkbox


【解决方案1】:

请注意,复选框返回数组,因为用户可以勾选多个元素。

ArrayList<String> selectedStrings = new ArrayList<String>();

answer详细描述。

【讨论】:

  • 嗨,我不明白请你编辑我的问题
【解决方案2】:

在 onCheckboxClicked 方法上使用 gettag,以便您可以识别哪个行号复选框是 click 。然后你可以得到该行的文本视图使用行号

【讨论】:

    【解决方案3】:

    如果您的CheckBoxListView 中,则无需在Activity 中创建 ClickListener。按照以下步骤从ListView 获取选定的文本。

    首先创建一个模型/pojo 类,这将帮助您存储所选CheckBox 的引用以及将在ListView 中显示的值。

    public class MyModel {
    
      private boolean isSelected;
    
      private String name;
    
       public MyModel(boolean isSelected, String name) {
          this.isSelected = isSelected;
          this.name = name;
        }
    
       public boolean isSelected() {
         return isSelected;
       }
    
       public void setSelected(boolean selected) {
        this.isSelected = selected;
       }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }
    

    创建一个可以作为回调的接口。

    public interface ItemSelectListener {
       void getSelectedItemText(String text);
    }
    

    重构您的 BaseAdapter,因为它现在将接受我们的模型类的列表以及回调侦听器。

    public MyAdapter extends BaseAdapter {
    
        private final List<MyModel> mDataItems;
    
        private final ItemSelectListener mItemListener;
    
        public MyAdapter(List<MyModel> dataItems, ItemSelectListener itemListener)
        mDataItems = dataItems;
        mItemListener = itemListener;
       }
    
       public View getView(int position, View convertView, ViewGroup parent)
       {
            ViewItem viewItem = null;
            if(convertView == null) {
                viewItem = new ViewItem();
                LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
               //LayoutInflater layoutInfiater = LayoutInflater.from(context);
               convertView = layoutInfiater.inflate(R.layout.list_adapter_view, null);
    
               viewItem.txtTitle = (TextView)convertView.findViewById(R.id.inactivelistview);
    
           // Add checkbox in your view item and confirm id of checkbox
           viewItem.checkBox = (CheckBox)convertView.findViewById(R.id. checkbox_me);
           }
           else {
               viewItem = (ViewItem) convertView.getTag();
           }
           final MyModel data = mDataItems.get(position);
           viewItem.txtTitle.setText(data.getName());
           viewItem.checkBox.setChecked(data.isSelected());
           viewItem.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton button, boolean checked) 
            {
                data.setSelected(checked);
                if(checked) {
                 // Make sure you override this in your Activity
                 mItemListener.getSelectedItemText(data.getName());
                }
            }
        });
    
       return convertView;
       }
    
    }
    

    Activity 中为ListView 创建数据源。

    BaseAdapter adapter = new BaseAdapter(dataItems, itemListener);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多