Je veux créer une façon d'utiliser des utilisateurs peut sélectionner des options telles que l'image ci-dessous
P>
Je fais maintenant le suivant P> mais je veux ajouter toute option comme l'image. Je pense donc que je devrai construire une boîte de dialogue personnalisée. Puis-je toujours prolonger le SetMultiChoicepitems natifs afin de réduire ma manipulation du code. P> p>
3 Réponses :
J'ai atteint la chose que vous affichez dans l'image. Ce que j'ai utilisé était le dialogue personnalisé car vous envisagez d'utiliser. J'avais utilisé ListView dans le fichier XML.
Tout d'abord définir l'initialisation de l'arrayage ci-dessous. p> ci-dessous est le code showdialog () fort> j'ai utilisé. p> xxx pré> ici est mon logout_dialogue.xml strud>: p> voici mon catagorysummaryadapter.java Strong>: P> package com.inukshk.adapter;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.inukshk.HomeActivity;
import com.inukshk.R;
import com.inukshk.CreateInukshk.BuildInukshk_3;
import com.inukshk.WhosNearMe.WhosNearMe;
public class CatagorySummaryAdapter extends BaseAdapter {
public Activity context;
String TAG = "CatagorySummaryAdapter";
public LayoutInflater inflater;
public ArrayList<String> Count;
boolean Dialogue;
public CatagorySummaryAdapter(Activity context, ArrayList<String> Count,
boolean Dialogue) {
super();
this.context = context;
this.inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.Count = Count;
this.Dialogue = Dialogue;
// TODO Auto-generated constructor stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Count.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return Count.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return position;
}
public class ViewHolder {
RelativeLayout lsummary_row;
TextView txtinterestname;
CheckBox chkinterest;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
int pos = position;
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
if (Dialogue) {
convertView = inflater.inflate(
R.layout.listview_summary_dialogue_row, null);
} else {
convertView = inflater.inflate(R.layout.listview_summary_row,
null);
}
holder.txtinterestname = (TextView) convertView
.findViewById(R.id.txtinterestname);
holder.lsummary_row = (RelativeLayout) convertView
.findViewById(R.id.lsummary_row);
holder.chkinterest = (CheckBox) convertView
.findViewById(R.id.chkinterest);
holder.chkinterest.setEnabled(true);
holder.chkinterest.setTag(position);
if (Dialogue) {
for (int i = 0; i < HomeActivity.acceptpositionwhoesNearMe.size(); i++) {
int index = Integer
.parseInt(HomeActivity.acceptpositionwhoesNearMe
.get(i));
// Log.i(TAG, "Inside for Loop of Accept Positions");
if (index == position) {
// Log.i(TAG, "Matched for index" + index);
holder.chkinterest.setChecked(true);
holder.chkinterest
.setButtonDrawable(R.drawable.checkbox_checked);
}
}
} else {
for (int i = 0; i < BuildInukshk_3.acceptposition.size(); i++) {
int index = Integer.parseInt(BuildInukshk_3.acceptposition
.get(i));
// Log.i(TAG, "Inside for Loop of Accept Positions");
if (index == position) {
// Log.i(TAG, "Matched for index" + index);
holder.chkinterest.setChecked(true);
holder.chkinterest
.setButtonDrawable(R.drawable.checkbox_checked);
}
}
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.chkinterest
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
// Log.i(TAG, "ISChecked is " + isChecked);
if (isChecked) {
// Log.i(TAG, "ISChecked is true");
buttonView
.setButtonDrawable(R.drawable.checkbox_checked);
int position = Integer.parseInt(buttonView.getTag()
.toString());
if (Dialogue) {
HomeActivity.acceptpositionwhoesNearMe.add(String
.valueOf(position));
Log.i(TAG, "Accept ID of Dialogue"
+ HomeActivity.acceptpositionwhoesNearMe);
} else {
BuildInukshk_3.acceptposition.add(String
.valueOf(position));
Log.i(TAG, "Accept ID"
+ BuildInukshk_3.acceptposition);
}
} else {
// Log.i(TAG, "ISChecked is false");
buttonView
.setButtonDrawable(R.drawable.checkbox_unchecked);
int position = Integer.parseInt(buttonView.getTag()
.toString());
if (Dialogue) {
if (HomeActivity.acceptpositionwhoesNearMe
.contains(String.valueOf(position))) {
// Log.i(TAG,
// "Inside Already present position");
HomeActivity.acceptpositionwhoesNearMe
.remove(String.valueOf(position));
Log.i(TAG,
"Accept ID Dialogue***"
+ HomeActivity.acceptpositionwhoesNearMe);
}
} else {
if (BuildInukshk_3.acceptposition
.contains(String.valueOf(position))) {
// Log.i(TAG,
// "Inside Already present position");
BuildInukshk_3.acceptposition.remove(String
.valueOf(position));
Log.i(TAG, "Accept ID ***"
+ BuildInukshk_3.acceptposition);
}
}
//
}
}
});
holder.txtinterestname.setText(Count.get(pos));
return convertView;
}
}
N'est-il pas possible d'utiliser SetMultichoiceItems avec DialogPraGment?
@Harshamv: Je n'ai pas encore utilisé SherlockDialogPragment. Donc, pas capable de vous donner une suggestion correcte. Désolé.
aucun problème. Pouvez-vous partager le code faire sur le tout et décocher tout aussi. Juste que tu as mentionné tu as atteint ceci. Je pense que nous pouvons facilement porter votre code à dialogment
J'ai édité ma réponse. jetez un coup d'oeil. Et laissez-moi savoir si vous trouvez des difficultés.
Vous pouvez probablement utiliser où autre Les modifications de style devraient être faites pour le rendre meilleur.
Mais voir la disposition de la boîte de dialogue totale, vous pouvez utiliser une classe de dialogue code> personnalisée code>, pour laquelle la méthode SetCustomtiTle () code>
méthode du alertdialog.builder Construct Construct et construisez votre propre titre qui a le texte du titre et la case tous em>
coque < / Code>, quelque chose comme ceci:
r.layout.custom_title code> est: p>
setmultichoice () code> ne sera pas disponible (mais à la fin, ce sera facile à reproduire). p> p>
La méthode getlayoutinflater (paquet) dans la boîte de dialogue de type n'est pas applicable pour les arguments ()
@HARSHAMV getActivity (). GetLayOUTInflater () code>
J'ai fait ce qui précède et j'ai mis en œuvre mon titre personnalisé, mais comment puis-je obtenir les valeurs des objets? Le FindViewByID ne fonctionne pas: /
@Alexanderfragotsis gonfler le titre personnalisé et stockez une référence à elle et la modifiez à partir de là. Voir title = getlayoutinflater (). Gonflez (r.layout.custom_title, null); .... setCustomtitle (titre); titre.findviewbyID (etc) code>.
Je voulais aussi continuer à utiliser ne renvoie pas le Définissez vos paramètres de constructeur: p> puis créer le Obtenez la liste code>, Ajoutez une en-tête et / ou de pied de pied et retournez-la. P> setmultichoicepitems () code> avec ma boîte de dialogue, donc au lieu de créer une boîte de dialogue personnalisée, j'ai fait ceci:
alertdialog code > immédiatement. Créez le
alertdialog.builder Code> C'est comme suit ceci: p>
alertdialog.builder Builder = New AlertDialog.Builder (getActivity ()); Code> P>
alertdialog code> appelant
créer () code>. Cela ne montrera pas encore à la boîte de dialogue. P>
alertdialog buildog = Builder.Create (); Code> P>
ListView dialogList = dialog.getListView();
dialogList.addFooterView(yourHeader);
return dialog;
Le constructeur
code> a un
SETCustomtitle (vue) code> méthode.
@LUKSPROG Il doit avoir une case à cocher. comme montré dans l'image. Donc, lorsque je clique que je veux vérifier ou décocher tout le contenu de la boîte de dialogue.
Bien donner une vue sur cette méthode contenant un
textview code> (le titre actuel) et la coche code> code> code>.
@Luksprog oh ok. Pouvez-vous partager des ressources pour la même chose où je peux voir comment cela peut être fait? Je pensais que nous devions construire un dialogue personnalisé