首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有checkedtextview的Android listview

带有checkedtextview的Android listview
EN

Stack Overflow用户
提问于 2015-07-06 16:59:49
回答 1查看 581关注 0票数 1

我和CheckedTextView有一个列表视图。我希望在选择项目时将其值添加到列表中,并在取消选择时从列表中删除该值。我不知道为什么我不能得到准确的值。提前感谢......

以下是我的代码

代码语言:javascript
复制
      listview.setOnItemClickListener(new OnItemClickListener() {

                            @Override
                            public void onItemClick(AdapterView<?> parent,
                                    View view, int position, long id) {



                                CheckedTextView ctv=(CheckedTextView)view.findViewById(R.id.addonsItem);

                            if (ctv.isChecked()) {

                                Temp.addonsIdList.add(addonsiDList.get(position));
                                Temp.addonsNameList.add(addonsList.get(position));
                                Temp.addonsPriceList.add(addonsPriceList.get(position));
                                ctv.setChecked(false);



                            }else{

                                Temp.addonsIdList.remove(addonsiDList.get(position));
                                Temp.addonsNameList.remove(addonsList.get(position));
                                Temp.addonsPriceList.remove(addonsPriceList.get(position));
                                ctv.setChecked(true);



                            } 

适配器getView代码

代码语言:javascript
复制
   @Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(
                R.layout.addons_text, parent, false);
        CheckedTextView checkTV=(CheckedTextView)convertView.findViewById(R.id.addonsItem);

        checkTV.setText(Temp.addonsName.get(position));                 
    }
    return convertView;
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-06 17:17:58

尝尝这个

您需要首先实现else部分,如下所示

代码语言:javascript
复制
ViewHolder holder;

     if (convertView == null) {
    holder = new ViewHolder();
            convertView = LayoutInflater.from(getContext()).inflate(
                    R.layout.addons_text, parent, false);
            holder.checkTV=(CheckedTextView)convertView.findViewById(R.id.addonsItem);


    convertView.setTag(holder);               
        }else{
    holder = (ViewHolder) convertView.getTag();
    }
     holder.checkTV.setText(Temp.addonsName.get(position)); 

然后创建类

代码语言:javascript
复制
class ViewHolder {
            CheckedTextView checkTV;
}

编辑1:

对于您的滚动问题,您需要遵循以下步骤。

Step 1.在ArrayList中添加选定的行值

getView中的Step 2.添加一个条件

代码语言:javascript
复制
if(yourArrayList.contains(selected_value)){
holder.checkTV.setChecked(true);
}else{
holder.checkTV.setChecked(false);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31241628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档