Stavo creando un'applicazione Android in cui utilizzo un controllo ListView. ListView è costituito da elementi di elenco CheckedTextView. La mia attività contiene un EditText in alto, una TextView sotto e un Button in basso. Lo spazio tra TextView e il pulsante è l'area occupata da ListView. Ora, dato che il mio ListView contiene pochi elementi, l'intero spazio di ListView non è occupato da essi. Anche lo spazio rimasto ovviamente varia da un dispositivo all'altro. Quello che voglio sapere è se c'è un modo per modificare l'altezza della riga di ListView in modo che l'intero spazio assegnato a ListView sia coperto. Inoltre, se si verifica la necessità di aggiungere alcuni elementi, l'altezza della riga può essere modificata di conseguenza. Di seguito ho fornito alcuni frammenti di codice in modo che sia facile capire come è il mio layout.Modifica dinamica dell'altezza della riga in un listview basato sul numero di voci di elenco
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#D0D0D0"
tools:context=".MainActivity" >
<Button
android:id="@+id/addcourse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Add Course" />
<EditText
android:id="@+id/coursenameet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:ems="10"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:hint="Course Name"
android:inputType="textCapWords" >
<requestFocus />
</EditText>
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_below="@+id/coursenameet"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@android:color/darker_gray" >
</View>
<TextView
android:id="@+id/weekdaytv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/divider"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"
android:layout_centerHorizontal="true"
android:text="Select weekdays for this Course" >
</TextView>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/addcourse"
android:layout_below="@+id/weekdaytv"
android:divider="#FFFFFF"
android:dividerHeight="2px">
</ListView>
</RelativeLayout>
Gli articoli sono CheckedTextViews che vengono implementati utilizzando BaseAdapter. Il metodo Veduta di classe BaseAdapter è
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
int colorpos = position % colors.length;
if(v == null){
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.listviewitem, null);
}
CheckedTextView newrow = (CheckedTextView) v.findViewById(R.id.checkedtextview);
v.setBackgroundColor(colors[colorpos]);
newrow.setTextColor(Color.BLACK);
newrow.setText(items[position]);
return v;
}
EDIT: Snippet dal Main Activity
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
adapter = new ItemsAdapter(MainActivity.this, weekdays, 6, lv.getBottom() - lv.getTop());
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
CheckedTextView ctv = (CheckedTextView) arg1;
adapter.toggle(ctv);
}
});
Got qualsiasi soluzione giusta? –