首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android ListView确定文本或CheckMark单击

Android ListView确定文本或CheckMark单击
EN

Stack Overflow用户
提问于 2013-03-24 11:28:23
回答 1查看 1.1K关注 0票数 0

标题已经写好了。

我有一个带有自定义适配器的listview,这些行只包含一个TextView和一个CheckBox。

我需要确定用户是点击checkMark还是文本,这样我就可以显示一个描述对话框,解释他将要检查的内容!

在我的适配器中,我设置了如下所示的OnClickListener:

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

    if(row==null){
        LayoutInflater inflater=getLayoutInflater();
        row=inflater.inflate(R.layout.entsorgung_list_item, parent, false);
    }

   // CheckedTextView checkedTextView = (CheckedTextView)row.findViewById(R.id.ctvEntsorgung);
   // checkedTextView.setText(bedarfsList.get(position));

    TextView itemText = (TextView)row.findViewById(R.id.tvEntdorgItem);
    CheckBox itemCheck = (CheckBox)row.findViewById(R.id.cbEntsorgItem);

    itemCheck.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("TRACE","check click pos "); 
            // here i need the ListView position thats been clicked
        }
    });

    itemText.setText(bedarfsList.get(position));

    Boolean checked = myChecked.get(position);
    if (checked != null) {
       itemCheck.setChecked(checked);
    }

    return row;
}

CheckBox将可聚焦设置为false。

在我的活动中,我有一个OnItemClickListener,它可以很好地用于文本单击,我只需要对我的checkBoxes也这样做。

EN

回答 1

Stack Overflow用户

发布于 2013-03-24 12:38:23

但是您已经从CheckBox方法接收到了getView的位置,所以请使用以下命令:

代码语言:javascript
复制
position

发自:

public View getView(int position, View convertView, ViewGroup parent)

就像这样:

代码语言:javascript
复制
itemCheck.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("TRACE","check click pos "); 
            Boolean checked = myChecked.get(position);
        }
    });

编辑:查看了我为非常类似的情况使用的以下适配器:

代码语言:javascript
复制
    private class MySecondAdapter extends ArrayAdapter<MiniTask>
{   
    private ArrayList<MiniTask> list;

    public MySecondAdapter(Context context, int textViewResourceId, ArrayList<MiniTask> miniTaskList) 
    {
        super(context, textViewResourceId, miniTaskList);
         this.list = new ArrayList<MiniTask>();
         this.list.addAll(miniTaskList);
    }
    public View getView(final int position, View convertView, ViewGroup parent)
    {
        miniTask = miniTaskList.get(position);
        ViewHolder holder = new ViewHolder();
        {
            LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflator.inflate(R.layout.check_list_item_new, null);

            holder.title = (TextView) convertView.findViewById(R.id.tvItemTitle);
            holder.commentsPicturesButton = (ImageView) convertView.findViewById(R.id.iAddCommetOrPicture);
            holder.commentsPicturesButton.setTag(position);
            holder.commentsPicturesButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) 
                {
                     Intent intent = new Intent(getApplicationContext(), PicturesAndCommentsActivity.class);
                     intent.putExtra(TasksListActivity.KEY_ID, task.getId());
                     intent.putExtra("mini_task_text", miniTask.getTitle());
                     startActivity(intent);
                }
            });
            holder.selected = (CheckBox) convertView.findViewById(R.id.cbCheckListItem);
            holder.selected.setTag(position);
            holder.selected.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v)
                {    
                    {                               
                        Log.d(TAG, "pressed the checkbox: " + v.getId() + " in position: " + position + " tag: " +v.getTag() +" and item from array: " + miniTaskList.get(position) );
                        CheckBox checkbox = (CheckBox) v;
                        miniTaskList.get(position).setSelected(checkbox.isChecked());   
                        numOfCheckedMiniTasks = 0;
                        for(int i=0;i<miniTaskList.size();i++)
                        {
                             miniTask = miniTaskList.get(i);
                             if(miniTask.isSelected())
                             {
                                numOfCheckedMiniTasks ++;
                             }
                        }
                        int percent = (int)(numOfCheckedMiniTasks * 100.0f) / miniTaskList.size();
                        Log.d(TAG, "the percentage is: " +percent);
                        tasksRepository.get(tasksRepository.indexOf(task)).setMiniTasksPercentageComplete(percent);
                    }
                }
            });

        }
        holder.title.setText(miniTask.getTitle());
        holder.selected.setChecked(miniTask.isSelected());
        return convertView;
    }
}

static class ViewHolder 
{
     TextView title;
     CheckBox selected;
     ImageView commentsPicturesButton;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15597865

复制
相关文章

相似问题

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