android case ajouter dynamiquement
Voici ma mise en page xmls. Maintenant, nous avons un nombre limité (sept) de cases à cocher dans la mise en page (listitem.xml). Et nous de l'ajouter dans un linéaire de la mise en page.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="21dp"
android:layout_marginTop="38dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/linearLayout1"
android:layout_alignLeft="@+id/linearLayout1"
android:text="TESTER : "
android:textColor="#000000" />
<AutoCompleteTextView
android:id="@+id/tester_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:capitalize="characters"
android:textColor="#000000">
<requestFocus />
</AutoCompleteTextView>
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout1"
android:layout_centerHorizontal="true"
android:layout_marginTop="19dp"
android:text="APPS TO TEST : "
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#000000"/>
<View
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_below="@+id/textView2"
android:background="#CCCCCC"
android:layout_marginBottom="5dp"/>
<ListView
android:id="@+id/apps_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/view1"
android:dividerHeight="5dp">
</ListView>
<Button
android:id="@+id/refreshBtn"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignBottom="@+id/textView2"
android:layout_alignParentLeft="true"
android:text="Refresh" />
</RelativeLayout>
listitem.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="70"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000" />
<Button
android:id="@+id/launch_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="20"
android:text="LAUNCH" />
</LinearLayout>
<RadioGroup
android:id="@+id/status_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/pass_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="PASS"
android:textColor="#000000" />
<RadioButton
android:id="@+id/fail_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="FAIL"
android:textColor="#000000" />
</RadioGroup>
<LinearLayout
android:id="@+id/failure_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="FAILURE REASONS"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000" />
<LinearLayout
android:id="@+id/failure_reasonslist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:orientation="vertical" >
<CheckBox
android:id="@+id/failure_Sound"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000" />
<CheckBox
android:id="@+id/failure_GPS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#000000" />
<CheckBox
android:id="@+id/failure_Display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#000000" />
<CheckBox
android:id="@+id/failure_Network"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#000000" />
<CheckBox
android:id="@+id/failure_Rotation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#000000" />
<CheckBox
android:id="@+id/failure_Microphone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#000000" />
<CheckBox
android:id="@+id/failure_Others"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:textColor="#000000" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/lineatlayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DESCRIPTION : "
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000" />
<EditText
android:id="@+id/description_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:ems="10"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="textMultiLine"
android:textColor="#000000" >
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/lineatlayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/submit_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" SUBMIT " />
<Button
android:id="@+id/uninstall_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="UNINSTALL" />
</LinearLayout>
<!-- </RelativeLayout> -->
</LinearLayout>
Mais aussi par la nouvelle exigence, nous devons ajouter les cases de façon dynamique. Comme le besoin de récupérer les options de l'appel d'API et de le convertir dans des cases à cocher dans la vue. J'ai passé beaucoup de temps en elle. Quelqu'un peut-il suggérer une méthode pour les résoudre.
Notre mise en page devrait ressembler à ceci. Dans une vue de liste nous présentons les informations sur les employés et pour chaque enregistrement de l'employé de la qualification doit être chargé à partir de l'appel d'API ou de la base de données.
[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]
---------------------------------------
Code Source
private class ListAdapters extends ArrayAdapter<ApplicationBean> {
private ArrayList<ApplicationBean> items;
private int position;
public ListAdapters(Context context, int textViewResourceId,
ArrayList<ApplicationBean> 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<=5; i++) {
CheckBox feature1 = new CheckBox(this.getContext());
featuresTable.addView(feature1);
}
txtDescription = (EditText) v
.findViewById(R.id.description_text);
txtDescription.setTag(position);
if (txtDescription.isFocused()) {
InputMethodManager inputManager = (InputMethodManager) mContext
.getSystemService(INPUT_METHOD_SERVICE);
inputManager.restartInput(txtDescription);
}
txtDescription
.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
final EditText Caption = (EditText) v;
o.setDescription(Caption.getText()
.toString());
}
}
});
uninstallButton = (Button) v.findViewById(R.id.uninstall_btn);
uninstallButton.setTag(position);
//uninstallButton.setVisibility(View.INVISIBLE);
o.setUninstallVisible(false);
uninstallButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Uri packageUri = Uri.parse("package:"
+ items.get(
Integer.parseInt(v.getTag().toString()))
.getPname());
Intent uninstallIntent = new Intent(
Intent.ACTION_DELETE, packageUri);
uninstallIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(uninstallIntent);
mTitleList.remove(items.get((Integer) v.getTag()));
mListView.setAdapter(new ListAdapters(mContext,
R.id.app_name, mTitleList));
((BaseAdapter) mListView.getAdapter())
.notifyDataSetChanged();
isUninstallclicked = true;
}
});
submitButton = (Button) v.findViewById(R.id.submit_btn);
submitButton.setTag(txtDescription);
submitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
EditText tv = (EditText) v.getTag(); //get edittext
//object
txtDescription = tv;
if (txtTesterName.getText().toString().equals("")) {
showDialog("Please enter the name of tester",
mContext);
} else if (numOptions == 0) {
showDialog("Please select failure reason", mContext);
} else if (tv.getText().toString().equals("")) {
showDialog("Please enter the description", mContext);
} else if (!isNetworkAvailable()) {
showDialog(
"No network connection.Report won't be submitted",
mContext);
} else {
if (!o.isUninstallVisible()) {
uninstallButton.setVisibility(View.VISIBLE);
o.setUninstallVisible(true);
mListView.invalidate();
}
PostRequest p = new PostRequest(Integer.parseInt(tv
.getTag().toString()));
p.execute();
}
}
});
}
return v;
}
OriginalL'auteur developerXXX | 2012-11-02
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur mukesh
Case Ajouter Dynamiquement
OriginalL'auteur Vivek Hirpara
De l'essayer.
Bonne Chance.
Vous pouvez poster votre code afin que je puisse la caisse de quelque chose d'elle.
J'ai édité ma question et posté mon code source. Pourriez-vous vérifier?
Voir ce qui se passe avec vous est que vous avez défini votre compteur de 0 donc 6 case sont créés.Je ne suis pas à obtenir ce que u veux dire par scrollback (que ce Soit que vous voulez dire de se déplacer de l'activité en cours pour une autre activité et de revenir à l'activité en cours ou quoi que ce soit d'autre)
J'ai peut-lignes de mon point de vue. Donc, la première ligne sera affichée en premier. Dans la première rangée de 6 cases. Et puis je peux faire défiler vers le bas pour voir les prochaines lignes dans ma liste vue. Maintenant, il est également de 6 cases. Mais quand j'ai faites défiler jusqu'à la première ligne de ci-dessous positions de ligne, la case à cocher chiffres sont en hausse. C'est ce que je voulais dire.
OriginalL'auteur Akshay