Comment mettre en avant l'affichage de la grille de l'élément à sélectionner?
Je suis entrain de créer un affichage de la Grille de mise en page avec l'image et le texte.Je veux la multi-sélection de l'élément qui fonctionne bien, mais je tiens à souligner les éléments de la grille qui est sélectionné.
Voici mon code:
public class FragMent1 extends Fragment{
BaseAdapter MyAdapter;
private Context mContext;
@SuppressLint("ValidFragment")
public FragMent1(Context c) {
mContext = c;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//View view = inflater.inflate(R.layout.g, null);
View view = inflater.inflate(R.layout.gridview,null);
final GridView listView = (GridView) view.findViewById(R.id.mainGrid);
listView.setAdapter(new Adapter());
//listView.setSelection(1);
listView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
//TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
//TODO Auto-generated method stub
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//TODO Auto-generated method stub
mode.setTitle("Select Items");
mode.setSubtitle("One item selected");
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//TODO Auto-generated method stub
int selectCount = listView.getCheckedItemCount();
switch (selectCount) {
case 1:
mode.setSubtitle("One item selected");
break;
default:
mode.setSubtitle("" + selectCount + " items selected");
break;
}
return true;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
//TODO Auto-generated method stub
int selectCount = listView.getCheckedItemCount();
switch (selectCount) {
case 1:
mode.setSubtitle("One item selected");
break;
default:
mode.setSubtitle("" + selectCount + " items selected");
break;
}
}
});
return view;
}
private class Adapter extends BaseAdapter {
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
//TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View myView = convertView;
ImageView image;
if (convertView == null) {
image = new ImageView(FragMent1.this.getActivity());
image.setLayoutParams(new GridView.LayoutParams(85, 85));
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = inflater.inflate(R.layout.grid_items_ontap, null);
//Add The Image!!!
ImageView iv = (ImageView)myView.findViewById(R.id.grid_item_image_OnTap);
iv.setImageResource(mThumbIds[position]);
//Add The Text!!!
TextView tv = (TextView)myView.findViewById(R.id.grid_item_text_onTap);
tv.setText(names[position] );
}
return myView;
}
private Integer[] mThumbIds = {
R.drawable.car, R.drawable.car,
R.drawable.car, R.drawable.car,
R.drawable.car,R.drawable.car,R.drawable.car
};
private String[] names={"ab","cd","ef","gh","ij","kl","mn"};
}
}
que dois-je ajouter le code pour mettre en évidence l'élément qui sera choisi.
Merci de me suggérer une certaine façon de le faire.
Merci à l'avance.
- Lorsque vous gonflez le point de vue de l'adaptateur, vous pouvez définir un Style défini dans Styles.xml fichier.
- u expalin moi.Je n'ai pas l'obtenir de vous.
- stackoverflow.com/questions/13080900/...
- Je veux aussi savoir que dans mon code ci-dessus, il est MultiChoiceModeListener() la méthode de sélection de la grille de l'élément sur le clic long mais j'ai besoin de sur sur il doit être sélectionné.U me dire de toute façon à supprimer long du robinet dans mon code ci-dessus.Donc,je peux remplir mon obligation.
- pourquoi GridView est appelé listview? si déroutant..
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser le sélecteur pour mettre en surbrillance l'élément de
Dans drawable dossier, créez un fichier xml
et définir listSelector de votre gridview comme
android:listSelector="@drawable/list_selector"
private int selectedPosition = -1
ajouter cette méthode pour votre ImageAdapter Classe
ajouter à la fin de votre méthode getView de ImageAdapter Classe ces lignes
puis il suffit d'ajouter ces lignes pour tester
si votre grille de point de vue est à l'intérieur d'une Relative mise en page, vous pouvez définir toucher l'auditeur là pour mettre en surbrillance l'élément sélectionné à l'aide d'un dessiner personnalisé-mesure(ici, j'utilise un patch neuf image pour indiquer la sélection)
ou vous pouvez utiliser le sélecteur de ainsi
Dans drawable dossier, créez un fichier xml
et définir listSelector de votre gridview comme
android:listSelector="@drawable/list_selector"
J'ai résolu ce problème avec
setTag
surchildItems
c'est mon exemple de code