CheckedTextView가있는 ListView.
-
15-11-2019 - |
문제
두 가지 질문이 있습니다 :
-
CheckedTextView
에서ListView
를 사용하고있는 경우, 내 클래스는Activity
아래 하단에 다른 버튼이 있기 때문에ListActivity
(ListView
대신)를 확장합니다.CheckedTextView
에서 확인란을 선택한 경우 를 듣는 이벤트를 듣고해야합니다. -
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;
}
제휴하지 않습니다 StackOverflow