public class MediaAdapter extends ArrayAdapter<SocialMedia> {
private Context context;
private int resource;
public MediaAdapter(Context context, int resource, ArrayList<SocialMedia> objects){
super(context,resource,objects);
this.resource = resource;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
convertView = inflater.inflate(resource, parent, false);
}
TextView txtVMediaName = convertView.findViewById(R.id.txtV_Media_Name);
TextView txtVUserName = convertView.findViewById(txtV_User_Name);
CheckBox test = R.id.chk_Display_Info;
txtVUserName.setVisibility(test.isChecked()?1:0);
SocialMedia socMedia = getItem(position);
txtVMediaName.setText(socMedia.getName());
txtVUserName.setText(socMedia.getUserId());
return (convertView);
}
}
Ce qui précède est mon ArrayAdapter et Ci-dessous mon MainActivityModifier la visibilité de tous les éléments de ListView (chaque élément listview est une disposition linéaire avec 2 Textviews) et cacher la seconde textview
public class MainActivity extends Activity {
private CheckBox chkDisInfo;
private ListView lstVSocMedDis;
private class onClickDisplayInfo implements CompoundButton.OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
DetermineDisplay(b);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chkDisInfo = findViewById(R.id.chk_Display_Info);
chkDisInfo.setChecked(true);
lstVSocMedDis = findViewById(R.id.lstv_DisplaySoc);
loadData();
chkDisInfo.setOnCheckedChangeListener(new onClickDisplayInfo());
}
private void loadData() {
ArrayList<SocialMedia> calledSocMedia = SocialMedia.getMedia();
MediaAdapter adapterM = new MediaAdapter(this, R.layout.list_media_info, calledSocMedia);
lstVSocMedDis.setAdapter(adapterM);
}
private void DetermineDisplay(boolean b) {
}
Voici maintenant ma SocialMedia classe, qui est appelé 4 fois
public class SocialMedia {
//Field Variables
private String name;
private String userId;
private int numContacts;
//Constructor 3 PARAM - Name(String) - UserID(String) - Number of Contact(int)
public SocialMedia(String name, String userId, int numContacts){
this.name = name;
this.userId = userId;
this.numContacts = numContacts;
}
//Setter/Getters
//Getter(String) - Void - Name
public String getName(){
return this.name;
}
//Setter(Void) - String - Name
public void setName(String newName){
this.name = newName;
}
//Getter(String) - Void - UserID
public String getUserId(){
return this.userId;
}
//Setter(Void) - String - Name
public void setUserId(String newUserId){
this.userId = newUserId;
}
//Getter(int) - Void - NumContacts
public int getNumContacts(){
return this.numContacts;
}
//Setter(Void) - int - NumContacts
public void setNumContacts(int newNumContacts){
this.numContacts = newNumContacts;
}
//Return Type -
@Override
public String toString(){
return String.format("%s, %s, %d", this.name,this.userId,this.getNumContacts());
}
public static ArrayList<SocialMedia> getMedia() {
ArrayList<SocialMedia> socMedia = new ArrayList<>();
socMedia.add(new SocialMedia("LinkedIn","Batman",100));
socMedia.add(new SocialMedia("Facebook","Not Bruce Wayne", 100));
socMedia.add(new SocialMedia("Twitter","Batz_Rulez", 100));
socMedia.add(new SocialMedia("Instagram","Gotham_Nights", 100));
return socMedia;
}
}
Dans DetermineDisplay
Je veux accéder à et définir le visibility
à INVISIBLE
et réduire sa taille. Ainsi, lorsque l'utilisateur sélectionne la case à cocher, tous mes articles listview
affichent uniquement le type SocialMedia
. Je souhaite le faire de manière dynamique et accéder à toutes les valeurs d'un appel plutôt qu'à une boucle for, mais si ma pensée est incorrecte et qu'une boucle for itère les éléments ListView
et que l'accès à chaque valeur est la méthode préférée. Ceci est juste une petite caractéristique, mais c'est nécessaire.
Vous voulez accéder à toutes txtVUserName de listview? –
oui, ceux-ci sont dans 'LinearLayout' et sont deux' Views' deux étant 'TextView' et le second' Textview' est celui qui doit être caché – Xav
Ok, essayez le code auquel j'ai répondu. –