Android добавить флажок динамически
Ниже приведены мои макеты xmls. Теперь у нас есть ограниченное количество (семь) флажков в макете (listitem.xml). И мы добавляем его в линейном макете.
main.xml
listitem.xml
Но согласно новому требованию нам нужно динамически добавлять флажки. Например, нужно извлечь параметры из вызова API и преобразовать их в виде флажков в представлении. Я провел много времени в нем. Может кто-нибудь предложить метод, чтобы решить эту проблему.
Наш макет должен быть таким. В виде списка мы отображаем сведения о сотруднике, и для каждой записи сотрудника квалификация должна быть загружена из вызова API или базы данных.
[Reviewer Name (Editable)]
Employee Lest
---------------------------------------
Employee1 [Click Me]
Male (0) Female ( )
Salary : [5999 (editable)]
Qualification
[X]BA
[ ]BSc
[ ]Matriculation
[ ]Other
[Submit Button]
---------------------------------------
Employee2 [Click Me]
Male (0) Female ( )
Salary : [5999 (editable)]
Qualification
[X]BA
[ ]BSc
[ ]Matriculation
[ ]Other
[Submit Button]
---------------------------------------
Employee3 [Click Me]
Male (0) Female ( )
Salary : [5999 (editable)]
Qualification
[X]BA
[ ]BSc
[ ]Matriculation
[ ]Other
[Submit Button]
---------------------------------------
Исходный код
private class ListAdapters extends ArrayAdapter {
private ArrayList items;
private int position;
public ListAdapters(Context context, int textViewResourceId,
ArrayList mTitleList) {
super(context, textViewResourceId, mTitleList);
this.items = mTitleList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
this.position = position;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.applicationlistitem, null);
}
final ApplicationBean o = (ApplicationBean) items.get(position);
if (o != null) {
txtAppName = (TextView) v.findViewById(R.id.app_name);
txtAppName.setText("" + o.getAppName());
launchButton = (Button) v.findViewById(R.id.launch_btn);
launchButton.setTag(position);
launchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final PackageManager pm = mContext.getPackageManager();
Intent LaunchIntent = pm
.getLaunchIntentForPackage(items
.get(Integer.parseInt(v.getTag()
.toString())).getPname());
mContext.startActivity(LaunchIntent);
}
});
final LinearLayout failure_reasonslist = (LinearLayout) v
.findViewById(R.id.failure_reasonslist);
rdgPassFail = (RadioGroup) v.findViewById(R.id.status_group);
rdgPassFail.setTag(position);
RadioButton passBtn = (RadioButton) v
.findViewById(R.id.pass_btn);
passBtn.setTag(position);
RadioButton failbtn = (RadioButton) v
.findViewById(R.id.fail_btn);
failbtn.setTag(position);
rdgPassFail
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group,
int checkedId) {
ApplicationBean o = (ApplicationBean) items
.get(Integer.parseInt(group.getTag()
.toString()));
switch (checkedId) {
case R.id.fail_btn:
Log.e("Fail button", "Clicked");
o.setFailState(true);
o.setPassState(false);
numOptions = 0;
Log.e("Fail button--1", "Clicked");
break;
case R.id.pass_btn:
Log.e("Pass button", "Clicked");
o.setFailState(false);
o.setPassState(true);
Log.e("Pass button-----1", "Clicked");
break;
}
items.set(Integer.parseInt(group.getTag()
.toString()), o);
}
});
LinearLayout featuresTable = (LinearLayout) v.findViewById(R.id.failure_reasonslist);
// use loop CheckBox feature1 = new CheckBox(this);
for(int i = 0; i