문제

두 가지 질문이 있습니다 :

  1. CheckedTextView에서 ListView를 사용하고있는 경우, 내 클래스는 Activity 아래 하단에 다른 버튼이 있기 때문에 ListActivity (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());
    
                }
    
            });
    
    .

도움이 되었습니까?

해결책

You could try this:

m_calendarList.setAdapter(adapter);
m_calendarList.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // do something here...
        // m_calendarList.getCheckedItemPosition(); will also give you the position
    }
});

EDIT:

m_calendarList.setOnItemClickListener(new OnItemClickListener(){
    public void onItemClick(AdapterView<?> parent, View view,int position,long id) {
        View v = m_calendarList.getChildAt(position);
        CheckedTextView ctv = (CheckedTextView) v.findViewById(R.id.cal_id);
    }
});

다른 팁

You can use CheckedTextView.setOnClickListener() Inside the onClick() method of your listener you can use CheckedTextView.isChecked() to find out whether it was it was checked or unchecked.

Edit: Here is an example of the getView() method for your Adapter.

    @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;
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top