G
grevenilvec
Erfahrenes Mitglied
- 81
Hallo Leute,
brauche dringend Hilfe. Ich hab hier ne Listview die aus Einträgen besteht, die angeglickt werden können, die lang angeglickt werden können und die ne Checkbox besitzen. Die ersten beiden Sachen funktionieren einwandfrei, die Checkbox dafür gar nicht. Wenn ich eine von den Checkboxen anklicke, werden die falschen oder noch zusätzliche Boxen selektiert/deselektiert. Im Internet hab ich bis jetz hierfür keine Lösung gefunden. Bin kurz vorm Verzweifeln.
Hier mal der Code von meinem Adapter zum Erstellen der Listview:
Vielen Dank schonmal für eure Hilfe!!!
grüße greven
brauche dringend Hilfe. Ich hab hier ne Listview die aus Einträgen besteht, die angeglickt werden können, die lang angeglickt werden können und die ne Checkbox besitzen. Die ersten beiden Sachen funktionieren einwandfrei, die Checkbox dafür gar nicht. Wenn ich eine von den Checkboxen anklicke, werden die falschen oder noch zusätzliche Boxen selektiert/deselektiert. Im Internet hab ich bis jetz hierfür keine Lösung gefunden. Bin kurz vorm Verzweifeln.
Hier mal der Code von meinem Adapter zum Erstellen der Listview:
Code:
package org.openintents.filemanager;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class CustomSettingsAdapter extends BaseAdapter{
private static ArrayList<SettingItem> settingsArrayList;
private LayoutInflater mInflater;
public CustomSettingsAdapter(Context context, ArrayList<SettingItem> sitems)
{
settingsArrayList = sitems;
mInflater = LayoutInflater.from(context);
}
public int getCount()
{
return settingsArrayList.size();
}
public Object getItem(int position)
{
return settingsArrayList.get(position);
}
public ArrayList<SettingItem> getItemList()
{
return settingsArrayList;
}
public long getItemId(int position)
{
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.settings_item, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.setting_name);
holder.details = (TextView) convertView.findViewById(R.id.setting_detail);
holder.cb = (CheckBox) convertView.findViewById(R.id.check);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtName.setText(settingsArrayList.get(position).getName());
holder.details.setText(settingsArrayList.get(position).getPath());
holder.cb.setChecked(settingsArrayList.get(position).getState());
int[]tags = new int[2];
tags[0]= position;
tags[1]= 0;
holder.cb.setTag(tags);
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int[]i=(int[])holder.cb.getTag();
settingsArrayList.get(i[0]).setState(isChecked);
notifyDataSetChanged();
}
});
return convertView;
}
static class ViewHolder
{
TextView txtName;
TextView details;
CheckBox cb;
}
}
Vielen Dank schonmal für eure Hilfe!!!
grüße greven