チェックボックスのリストが表示されるリストビューがあります。ボタンを押すと、リストビューでユーザーが選択されている各項目に対して sth を実行するボタンを追加したいです。どのチェックボックスがチェックされているかを見つける最良の方法は何ですか?使用できることはわかってsetOnCheckedChangeListener
いますが、リスト内のチェックボックスごとに if を呼び出す方法は?また、配列文字列を作成し、チェックボックスをオンにするたびにそのテキストを配列リストに追加すると、選択した項目ごとにループを実行できますか? リストビューを作成するための私のコードは次のとおりです
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database_list);
File path=new File(ClubCP.SDcardPath);
List<String> file_lists = main.directoryPath(path);
ListView Database_list=(ListView)findViewById(R.id.database_list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.database_list_item,R.id.chk_database_list_item,file_lists);
ArrayAdapter<String> adapter1 = new InteractiveArrayAdapter(this,file_lists);
Database_list.setAdapter(adapter1);
}
検索したところ、ArrayAdapter を使用する必要があると思います..そのクラスを作成しています..これは私のクラス パッケージ co.tosca.persianpoem です。
import java.util.List;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
public class InteractiveArrayAdapter extends ArrayAdapter<String> {
private final List<String> list;
private final Activity context;
public InteractiveArrayAdapter(Activity context, List<String> list) {
super(context, R.layout.database_list_item, list);
this.context = context;
this.list = list;
}
static class ViewHolder {
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.database_list_item, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.chk_database_list_item);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
///do sth
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
return view;
}
}
ご協力いただきありがとうございます