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);
}
}
以上是我ArrayAdapter,和下面是我的MainActivity變化可見性(每個列表視圖項目是2個Textviews線性佈局)和隱藏第二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) {
}
這是現在我的社會化媒體類別,這就是所謂的4倍
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;
}
}
在DetermineDisplay
我想訪問txtVUserName
並將visibility
設置爲INVISIBLE
並摺疊其大小。因此,當用戶選中複選框時,我的所有listview
項目僅顯示SocialMedia
類型。我希望動態執行此操作,並在一次調用中訪問所有值,而不是在for循環中,但如果我的想法不正確,並且通過遍歷ListView
項目並訪問每個值的for循環是首選方法。這只是一個小功能,但它是必需的。
所以,你要訪問的列表視圖的所有txtVUserName? –
是的,這些都在'LinearLayout'內,並且是兩個'Views'都是'TextView',第二個'Textview'是需要隱藏的必需項。 – Xav
好吧試試我已經回答的代碼。 –