Ich habe benutzerdefinierte Adapter mit Element mit Kontrollkästchen und Textansicht. Hier ist das Layout des Artikels:OnItemClick Listener funktioniert nicht mit benutzerdefinierten Adapter mit Kontrollkästchen
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_margin"
>
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:focusable="false"
android:focusableInTouchMode="false"
/>
<TextView
android:id="@+id/checkBoxDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_marginLeft="@dimen/new_small_margin"
android:layout_alignBaseline="@+id/isEbank"
android:layout_alignBottom="@+id/isEbank"
android:layout_toRightOf="@+id/isEbank"
android:layout_alignTop="@+id/isEbank"
android:gravity="left"
android:focusable="false"
android:focusableInTouchMode="false"
/>
Hier ist, wie die Liste wie folgt aussieht:
Ich mag, wenn Benutzer klickt auf Listenelement oder auf Checkbox ausführen gleiche Aktion. OnItemClick wird jedoch nicht ausgelöst, wenn der Benutzer auf ein Element klickt.
Hier ist mein Code für die Ansicht:
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
View mRoot = inflater.inflate(R.layout.fragment_user, container, false);
ArrayList<Option> listOptions=new ArrayList<Option>();
Option optionYes=new Option(true,getResources().getString(R.string.Yes));
listOptions.add(optionYes);
Option optionNo=new Option(false,getResources().getString(R.string.No));
listOptions.add(optionNo);
listView=(ListView)mRoot.findViewById(R.id.lst);
adapter=new OptionAdapter(getActivity(),R.layout.item_option,listOptions);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckBox box = (CheckBox) view.findViewById(R.id.checkBox1);
box.setChecked(true);
}
});
return mRoot;
}
Hier ist mein Code für den Adapter:
@Override
public View getView(int position, View convertView, final ViewGroup parent) {
final Option selectedOption = optionsList.get(position);
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_option, null);
holder = new ViewHolder();
holder.optionDesc = (TextView) convertView.findViewById(R.id.optionDesc);
holder.optionDesc.setText(selectedOption.getDesc());
holder.optionCheckBox = (CheckBox) convertView.findViewById(R.id.isEbank);
holder.optionCheckBox.setFocusable(false);
holder.optionCheckBox.setFocusableInTouchMode(false);
convertView.setTag(holder);
holder.optionCheckBox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
});
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
aber es funktioniert nicht.
ich hinzugefügt Checkbox und Textview und es funktioniert nicht. Ich habe auch nur im Root-Tag des Elements XML hinzugefügt und es funktioniert nicht – vikifor
Sie sollten diesen Code kommentieren 'halter.optionCheckBox.setOnClickListener (neue View.OnClickListener() { öffentliche void onClick (View v) { }) " –