Je développe une petite application avec une vue de liste remplie d'un composant composé. Ce composant a deux vues de texte et un bouton à l'intérieur. L'un des affichages de texte est invisible et lorsque le bouton est cliqué, il doit apparaître. Je peux montrer la liste mais je ne peux pas rendre le textview visible quand le bouton est cliqué. Voici le code XML du composant:Composant personnalisé listview évolutif avec bouton click
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:text="@+id/TextView01"
android:id="@+id/placeNamwView"
android:layout_height="wrap_content"
android:textSize="30dp"
android:layout_width="wrap_content"
android:maxWidth="250dp">
</TextView>
<Button
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/placeNamwView"
android:layout_width="wrap_content"
android:id="@+id/Button01"
android:text="More">
</Button>
<EditText
android:layout_below="@+id/placeNamwView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@+id/TextView01"
android:id="@+id/placeAddressView"
android:textSize="20dp"
android:textColor="#FFFF0000"
android:maxWidth="250dp">
</EditText>
</RelativeLayout>
Et c'est le ArrayAdapter qui remplit la liste:
public class AddressAdapter extends ArrayAdapter<Item> {
int resource;
RelativeLayout placeView;
EditText addressText;
public AddressAdapter(Context _context, int _resource, List<Item> _items) {
super(_context, _resource, _items);
resource = _resource;
}
private OnClickListener buttonClick = new OnClickListener() {
public void onClick (View v) {
int i = placeView.findViewById(R.id.stub_import).getVisibility();
visibility(i);
}
}
private void visibility(int i) {
//
TODO Auto-generated method stub
switch(i) {
case(View.GONE):
addressText.setVisibility(View.VISIBLE);
break;
case(View.VISIBLE):
addressText.setVisibility(View.GONE);
break;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Item item = getItem(position);
String name = item.getName();
String address = item.getAddress();
if (convertView == null) {
placeView = new RelativeLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, placeView, true);
}
else
{
placeView = (RelativeLayout) convertView;
}
TextView nameText = (TextView)placeView.findViewById(R.id.placeNamwView);
Button button = (Button)placeView.findViewById(R.id.Button01);
addressText = (EditText)placeView.findViewById(R.id.placeAddressText);
button.setOnClickListener(buttonClick);
nameText.setText(name);
addressText.setText(address);
return placeView;
}
}