android - 带有选中 TextView 的 ListView

标签 android listview checkedtextview

我有两个问题:

  1. 如果我在 ListView 中使用 CheckedTextView 并且我的类仅扩展 Activity(而不是 ListActivity) code>),因为我的 ListView 下方底部有另一个按钮, 当 CheckedTextView 中的复选框被选中时,我应该监听什么事件?

  2. 如果我扩展我的类以使用 ListActivity,我就可以使用 onListItemClick 事件,对吗?如何向这种类型的布局添加新按钮?

这是我的代码..

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    m_versionText=(TextView)findViewById(R.id.versionText);
    m_versionText.setText("Android Version is:" + Build.VERSION.RELEASE);
    m_btnAllCalendars = (Button)findViewById(R.id.btn_allCalendars);
    m_btnAllCalendars.setOnClickListener(mCalendarListener);
    m_calendarList=(ListView)findViewById(R.id.calList);

    //populateList uses simplecursoradapter to add items to the listview..(this part is working)

    populateList();
    m_calCheckText = (CheckedTextView)findViewById(R.id.calTextView);
    m_calCheckText.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
        if (((CheckedTextView)v).isChecked())
        {
            Log.d(TAG,"i am inside ...its checked");
        }
    }

    });

     private void populateList(){

        Log.d(TAG,"inside populateList");
        Cursor cursor = getAllCalendars();
        startManagingCursor(cursor);

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.cal_list,cursor,new String[]{"displayName"},new int []{R.id.calTextView});
        //m_calendarList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        m_calendarList.setAdapter(adapter);
      }

 }

更新:::

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.cal_list,cursor,new String[]{"displayName"},new int []{R.id.calTextView});
        m_calendarList=getListView();
        m_calendarList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        m_calendarList.setAdapter(adapter);
        m_calendarList.setOnItemClickListener(new OnItemClickListener(){
            public void onItemClick(AdapterView<?> parent, View view,int position,long id)
            {
                Log.d(TAG,"I am inside onItemClick and position is:"+String.valueOf(position));
            CheckedTextView ctv = (CheckedTextView)view;
    the below code didnt work too           
          //CheckedTextView ctv = (CheckedTextView)view.findViewById(R.layout.cal_list);
                ctv.setChecked(!ctv.isChecked());

            }

        });

最佳答案

您可以使用 CheckedTextView.setOnClickListener() 在监听器的 onClick() 方法中,您可以使用 CheckedTextView.isChecked() 来查明它是已选中还是未选中。

编辑:这是适配器的 getView() 方法的示例。

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.row, null);
        }
        m_calCheckText = (CheckedTextView)v.findViewById(R.id.calTextView);
        m_calCheckText.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v){
                if (((CheckedTextView)v).isChecked())
                {
                   Log.d(TAG,"i am inside ...its checked");
                }
            }
        });

        return v;
    }

关于android - 带有选中 TextView 的 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5034362/

相关文章:

wpf - 将 XAML Column 和 ListViewItem 中的文本居中

android - NPE 自定义 ListView 适配器

java - 保存checkedtextview状态时出现问题,它对多个项目表现不佳

Android sqlite - 空表上的光标计数不为 0

java - 如何实现实时跟踪?

android - 这个 Android SQL 语句是否容易受到 SQL 注入(inject)攻击?

android - 覆盖引用的样式属性

Android scanLeCallback 返回 Null BluetoothDevice

android - 使用自定义 ArrayAdapter 在 ListView 中删除带有按钮的项目

android - CheckedTextView 比 TextView 占用更多空间