我在 AlertDialog 上显示了一个自定义列表。我希望当我单击一个项目时,CheckedTextView 被设置为选中状态。我尝试了几个小时,但setChecked()
似乎不起作用......
谁能帮助我?
final List<Producteur> p = DAOProducteur.getInstance(null).recherche(producteur);
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Résultat(s) :");
builder.setSingleChoiceItems(
new ArrayAdapter<Producteur>(
activity,
R.layout.activity_recherche_producteurs,
p) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) parent.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.activity_recherche_producteurs, parent, false);
// Chargement des éléments à partir du layout
TextView numProd = (TextView) rowView.findViewById(R.id.num_prod);
TextView numLaiterie = (TextView) rowView.findViewById(R.id.num_laiterie);
TextView numLabo = (TextView) rowView.findViewById(R.id.num_labo);
TextView raisonSociale = (TextView) rowView.findViewById(R.id.raison_sociale);
TextView adresse = (TextView) rowView.findViewById(R.id.adresse);
final CheckedTextView checkBox = (CheckedTextView) rowView.findViewById(R.id.check_box);
// Mise en place des textes sur les éléments
numProd.setText("n° " + String.valueOf(p.get(position).getNumProd()));
numLaiterie.setText(", " + String.valueOf(p.get(position).getNumLaiterie()));
String nLabo = String.valueOf(p.get(position).getNumLabo());
nLabo = nLabo.substring(0, nLabo.length() - 1) + " " + nLabo.substring(nLabo.length() - 1, nLabo.length());
numLabo.setText(nLabo);
raisonSociale.setText(String.valueOf(p.get(position).getRaisonSociale()));
adresse.setText(String.valueOf(p.get(position).getAdresse()));
checkBoxList.put(position, checkBox);
return rowView;
}
},
-1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int position) {
producteurChoisi = p.get(position);
checkBoxList.get(dernierCheck).setChecked(false);
checkBoxList.get(position).setChecked(true);
dernierCheck = position;
}
});
builder.setPositiveButton(R.string.valider, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position) {
dialog.cancel();
if(producteurChoisi != null) {
// Ajout du producteur dans la tournée modèle
DAOTourneeModele.getInstance(activity).nouveauProducteur(
date,
tournee,
tour,
producteurChoisi.getNumProd());
// Ouverture du litrage correspondant au nouveau producteur
Intent i = new Intent(activity.getApplicationContext(), SaisieActivity.class);
i.putExtra("date", date);
i.putExtra("tournee", String.valueOf(tournee));
i.putExtra("tour", tour);
i.putExtra("producteur", String.valueOf(producteurChoisi.getNumProd()));
activity.startActivity(i);
} else {
Toast.makeText(activity, getString(R.string.erreur_producteur_non_choisi), Toast.LENGTH_LONG).show();
}
}
});
builder.setNegativeButton(R.string.quitter, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
new AjouteProdDialog().show(activity.getFragmentManager(), "dialog");
}
});
AlertDialog alert = builder.create();
alert.show();
SparseArray<CheckedTextView> checkBoxList = new SparseArray<CheckedTextView>();
并int dernierCheck = 0;
在之前声明。
还有我的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/num_prod"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/etat"
android:text="n° 477009"
android:textStyle="bold" />
<TextView
android:id="@+id/num_laiterie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/etat"
android:layout_toRightOf="@+id/num_prod"
android:text=", 131" />
<TextView
android:id="@+id/num_labo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/etat"
android:layout_centerHorizontal="true"
android:layout_toRightOf="@+id/num_laiterie"
android:text="477009 5" />
<TextView
android:id="@+id/raison_sociale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/num_prod"
android:layout_alignParentLeft="true"
android:text="GAEC DE ST AIGNAN" />
<TextView
android:id="@+id/adresse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/raison_sociale"
android:layout_alignParentLeft="true"
android:text="KERAIGNAN" />
<CheckedTextView
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:checkMark="?android:attr/listChoiceIndicatorSingle" />
</RelativeLayout>