Ich habe eine Frage bezüglich der ichecked oder unchecked der Checkbox in meinem Listenansicht. Ich weiß, dass die Art und Weise, wie ich meine Checkbox implementiere, sich von anderen unterscheidet.Checkbox ischeck oder uncheck android
in mainactivity.java
package com.example.luenwong.checkboxtest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
Button bn;
ListView listView;
CheckBox chkAll;
String[] android_versions = { "ID:1", "ID:2", "ID:3", "ID:4", "ID:5", "ID:6", "ID:7", "ID:8", "ID:9" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
chkAll = (CheckBox) findViewById(R.id.chkAll);
bn = (Button) findViewById(R.id.buttonStore);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, android_versions);
listView.setAdapter(adapter);
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int itemCount = listView.getCount();
for(int i = 0; i < itemCount; i++)
{
if(((CheckBox) view).isChecked()){
System.out.println("hey there");
}
}
}
});
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox chk = (CheckBox) view;
int itemCount = listView.getCount();
for (int i = 0; i < itemCount; i++) {
System.out.println("correct: "+adapter.getItem(i));
listView.setItemChecked(i, chk.isChecked());
}
}
};
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
CheckBox chk = (CheckBox) findViewById(R.id.chkAll);
int checkedItemCount = getCheckedItemCount();
if (listView.getCount() == checkedItemCount)
chk.setChecked(true);
else
chk.setChecked(false);
}
};
chkAll.setOnClickListener(clickListener);
listView.setOnItemClickListener(itemClickListener);
}
private int getCheckedItemCount(){
int cnt = 0;
SparseBooleanArray positions = listView.getCheckedItemPositions();
int itemCount = listView.getCount();
for(int i=0;i<itemCount;i++){
if(positions.get(i))
cnt++;
}
return cnt;
}
}
In XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right"
android:paddingRight="5dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="selectALL"
/>
<CheckBox
android:id="@+id/chkAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="getGet"
/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:choiceMode="multipleChoice"
/>
<Button
android:id="@+id/buttonStore"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="ADD Checkbox"
></Button>
</LinearLayout>
ich wirklich weiß nicht, wie meine Checkbox mit dieser Methode zu überprüfen. Da das Kontrollkästchen nicht anhand des Kontrollkästchens in XML erstellt wurde.
Hallo @ Nick Asher. Danke für die Antwort, aber das Tutorial hat mehrere Kontrollkästchen im XML und ich habe es nicht in meinem. –