2012-07-18 4 views
3

J'ai le code suivant: et une liste apparaît sur mon fragment. Comment puis-je utiliser les éléments de la liste comme des boutons alors quand je clique dessus pour changer la page de ViewFlipper?
J'ai essayé d'utiliser une variable (changepage) initialisée avec -1. et pour obtenir la position de l'adaptateur dans celui-ci. de sorte que, cliquez pour vérifier combien il est, et de changer la fonction displaychildren du ViewFlipper(Android) Comment puis-je utiliser un listView en tant que boutons?

package com.weinco.fragments; 

import java.util.ArrayList; 


import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.ViewFlipper; 

import com.weinco.R; 


public class VinocardFragment extends Fragment { 
int mNum; 
private ListView menuItemList; 
private ListViewAdapter listViewAdapter; 
public static String text; 
public static ViewFlipper VF; 
public static ListView listViewVino; 
public static final ArrayList<String> ListviewContent = new ArrayList<String>(); 
public static int changepage=-1; 

/** 
* Create a new instance of CountingFragment, providing "num" as an 
* argument. 
*/ 
static VinocardFragment newInstance(int num) { 
    VinocardFragment f = new VinocardFragment(); 

    // Supply num input as an argument. 
    Bundle args = new Bundle(); 
    args.putInt("num", num); 
    f.setArguments(args); 

    return f; 
} 

// ListView 

public static class ListViewAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 

    public ListViewAdapter(Context context) { 

     mInflater = LayoutInflater.from(context); 

    } 

    public int getCount() { 
     return ListviewContent.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     ListContent holder; 

     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.listviewinflate, null); 

      holder = new ListContent(); 
      holder.text = (TextView) convertView 
        .findViewById(R.id.TextView01); 


      convertView.setTag(holder); 
     } else { 

      holder = (ListContent) convertView.getTag(); 
     } 

     holder.text.setText(ListviewContent.get(position)); 
     return convertView; 
    } 

    public void onItemClick(AdapterView<?> parent, View v, 
      int position, long id) { 
     if (position==0){ 
      changepage=0; 
     } 
    } 

    class ListContent { 
     TextView text; 

    } 
} 

/** 
* When creating, retrieve this instance's number from its arguments. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mNum = getArguments() != null ? getArguments().getInt("num") : 1; 

} 

/** 
* The Fragment's UI is just a simple text view showing its instance number. 
*/ 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.vinocard, container, false); 
    VF = (ViewFlipper) v.findViewById(R.id.viewFlipperVino); 

    OnClickListener anmeldenListener; 
    OnClickListener zuruckListener; 
    OnClickListener zuruckListener2; 

    // Variables 
    ImageButton anmeldenB = (ImageButton) v.findViewById(R.id.anmelden); 
    ImageButton backB = (ImageButton) v.findViewById(R.id.backVinoNr); 
    ImageButton backB2 = (ImageButton) v.findViewById(R.id.backVinomenu); 
    menuItemList = (ListView) v.findViewById(R.id.listViewVino); 
    EditText vE = (EditText) v.findViewById(R.id.vinonr); 
    text = vE.getText().toString(); 
    getMenuItems(); 




    // Onclick Listeners for buttons 
    anmeldenListener = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      VF.showNext(); 

      menuItemList.setAdapter(listViewAdapter); 

     } 

    }; 

    if (changepage==0){ 
     VF.showNext(); 

    } 


    zuruckListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }; 
    zuruckListener2 = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      VF.showPrevious(); 
     } 
    }; 

    //Get Item ID's to pages 




    anmeldenB.setOnClickListener(anmeldenListener); 
    backB.setOnClickListener(zuruckListener); 
    backB2.setOnClickListener(zuruckListener2); 
    return v; 
} 

private void getMenuItems() { 
    ListviewContent.add("Exklusivangebote"); 
    ListviewContent.add("Gutschein schneken"); 
    ListviewContent.add("Kundendaten"); 
    ListviewContent.add("Meine Gutscheine"); 
    ListviewContent.add("Jahresbonus"); 
    listViewAdapter = new ListViewAdapter(getActivity()); 

} 
} 

Répondre

0

Ce a résolu le problème:

menuItemList.setOnItemClickListener (nouveau OnItemClickListener() {

  public void onItemClick(AdapterView<?> menuItemList, View v, int position, 
      long id) { 
      changepageothers=position; 
      if (changepageothers==0){    
      VF.showNext(); 
      changepageothers=-1; 
      } 
      if (changepageothers==1){ 
      VF.showPrevious(); 
      changepageothers=-1; 
      } 

      } 
      }); 
2

Vous pouvez étendre ListFragment par opposition à Fragment et mettre en œuvre onListItemClick(). De là, vous pouvez obtenir l'ID de l'article ListView cliqué et faire ce que vous voulez avec.

Pour mettre en œuvre onListItemClick(),

  1. Faites un clic droit de votre codespace.
  2. souris-over "Source"
  3. Cliquez sur "Ignorer/Mettre en œuvre des méthodes"
  4. Recherche et vérifiez onListItemClick(ListView l, View v, int position, long id)
  5. Cliquez sur "OK" pour mettre en œuvre des méthodes vérifiées.

Trouvez onListItemClick dans votre code et vous devriez voir:

public void onListItemClick (ListView l, View v, int position, long id) 
{ 
    // l - ListView that was clicked 
    // v - View that was clicked within ListView l 
    // position - Position of View v within ListView l 
    // id - row id of item that was clicked 
} 
+0

PS Je suis Vous ne savez pas comment 'Fragments' fonctionne, mais vous pouvez supprimer l'instruction' import com.weinco.R' car l'importation de tout fichier R est inutile et pourrait éventuellement gâcher votre build. –

+0

Comment puis-je obtenir l'ID de l'élément ListView? désolé mais im nouveau à la liste des points de vue, et je suis en train d'apprendre: p –

+0

Mise à jour de la réponse, donnez-lui un aperçu. –

Questions connexes