Listview avec checkedtextview
J'ai deux questions:
-
Si je suis en utilisant
CheckedTextView
dans unListView
et ma classe ne couvre que lesActivity
(au lieu deListActivity
), depuis j'ai un autre bouton en bas en dessous de monListView
,
quel événement devrais-je écouter, quand une case est cochée dans laCheckedTextView
? -
Si je prolonge ma classe à utiliser
ListActivity
, je peux utiliseronListItemClick
événement, droit? Comment puis-je ajouter un nouveau bouton à ce type de mise en page?
Voici mon code..
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);
}
}
Mise à JOUR:::
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());
}
});
InformationsquelleAutor droidprogrammer | 2011-02-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ceci:
EDIT:
view
paramètre à laonItemClick()
fonction doit être celui qui a été le déclic. REMARQUE! il y a une différence entresetOnItemClickListener
etsetOnClickListener
surtout quand la liste est mise en œuvre cliquable éléments (tels que le CheckedTextView)m_calCheckText.setOnClickListener
. Vous devriez essayer d'utiliser lasetOnItemClickListener
à la place (c'est-à-POINT-sur-le port d'écoute).LinearLayout
parce que votre commande de l'élément de liste est le plus susceptible construit avec unLinearLayout
. Vous pouvez essayer deview.findViewById(R.id.myCheckedTextViewId)
pour récupérer le CheckedTextView en questionVous pouvez utiliser CheckedTextView.setOnClickListener() à l'Intérieur de la onClick() la méthode de votre écouteur vous pouvez utiliser CheckedTextView.isChecked() pour savoir si c'était cochée ou décochée.
Edit: Voici un exemple de la getView() méthode pour votre Adaptateur.