I
inspire
Ambitioniertes Mitglied
- 3
Hi,
ein ListView bei mir scheint sich komisch zu verhalten. Es beinhaltet einfache Elemente dieser Art:
Die visibility-Attribute sollen standard sein.
Dieses ListView bekommt mit setAdapter nun einen selbst definierten Adapter, der so aussieht:
Durch eine onItemClick-Methode wird nun notifyDataSetChanged des Adapters aufgerufen. Die getView-Methode wird dabei wieder durchlaufen - doch plötzlich sind das TextView und die CheckBox anderen Elementen des ListView auch sichtbar! Dabei sollen die Visibility-Attribute nur bei ganz bestimmten Elementen verändert werden...Irgendwie wird das ListView nicht richtig refresht.
Was mache ich falsch?
Martin
ein ListView bei mir scheint sich komisch zu verhalten. Es beinhaltet einfache Elemente dieser Art:
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:gravity="left|center"
android:layout_width="fill_parent" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:gravity="left|center"
android:layout_width="wrap_content"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:paddingLeft="5dp"
android:orientation="vertical">
<TextView
android:id="@+string/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="20sp"></TextView>
<TextView android:text=""
android:id="@+string/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textSize="12sp"
[B]android:visibility="invisible"[/B]></TextView>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:gravity="right|center"
android:layout_width="fill_parent" >
<CheckBox android:id="@+string/CheckBox01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:gravity="right|center_vertical"
android:focusable="false"
android:focusableInTouchMode="false"
[B]android:visibility="invisible"[/B]
/>
</LinearLayout>
</LinearLayout>
Dieses ListView bekommt mit setAdapter nun einen selbst definierten Adapter, der so aussieht:
Code:
static class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return listoptions.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
View row = convertView;
if (row == null)
convertView = mInflater.inflate(R.layout.listview, null);
holder = new ViewHolder();
holder.checkbox = (CheckBox) convertView.findViewById(R.string.CheckBox01);
holder.title = (TextView) convertView.findViewById(R.string.TextView01);
holder.status = (TextView) convertView.findViewById(R.string.TextView02);
holder.title.setText(listoptions[position]);
holder.status.setText(liststatus[position]);
if ((liststatus[position].toString().equals("on")) || (liststatus[position].toString().equals("off")))
{ // ELEMENTS WITH CHECKBOX
holder.checkbox.setVisibility(0);
if (liststatus[position].toString().equals("on"))
holder.checkbox.setChecked(true);
}
else
{ // ELEMENTS WITHOUT CHECKBOX
holder.status.setVisibility(0);
}
return convertView;
}
class ViewHolder {
TextView title;
TextView status;
CheckBox checkbox;
}
}
Was mache ich falsch?
Martin
Zuletzt bearbeitet: