2016-07-24 53 views
3

如何將Spinner插入FragmentonCreateView
如果我寫一個Spinner下:如何將微調器插入ListView的每一行

ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.fragment_list2, container, false); 

會導致不正確將佈局爲Spinner,但它是在PlanetAdapter對象正確的佈局。
以這種方式,我在列表視圖下有微調,而我想讓微調進入Listview的行視圖。
Spinner進入另一個佈局名爲:single_listview_item
下面你可以看到我試過到目前爲止:

片斷:

public class MyListFragment extends Fragment implements 
     android.widget.CompoundButton.OnCheckedChangeListener,AdapterView.OnItemSelectedListener { 

    ListView lv; 
    ArrayList<Planet> planetList; 
    static PlanetAdapter plAdapter; 
    private TextView txtName; 
    private TextView txtEmail; 
    private Button btnLogout; 
    private Spinner spinner1; 
    private Spinner spinner2; 
    Spinner spinner; 

    private SQLiteHandler db; 
    private SessionManager session; 
    BirraAdapter biAdapter; 
    PlanetAdapter.PlanetHolder holder; 
    private static Context context = null; 
    private static FragmentActivity mInstance; 

    Integer[] imageId = { 
      R.mipmap.androtuto, 
      R.mipmap.ic_launcher, 
      R.mipmap.ic_launcher, 
      R.mipmap.ic_launcher, 
      R.mipmap.ok, 
      /*R.drawable.image6, 
      R.drawable.image7*/ 

    }; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the custom_spinner_items for this fragment 
     //super.onDestroy(); 

     SharedPreferences settings = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.clear(); 
     editor.commit(); 
     ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list2, container, false); 

     spinner = (Spinner) rootView.findViewById(R.id.simpleSpinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getContext(), 
       R.array.country_arrays, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(this); 
     context = getActivity(); 
     mInstance = getActivity(); 
     txtName = (TextView) rootView.findViewById(R.id.name); 
     txtEmail = (TextView) rootView.findViewById(R.id.numero_telefonico); 
     btnLogout = (Button) rootView.findViewById(R.id.btnLogout); 

     // SqLite database handler 
     db = new SQLiteHandler(context.getApplicationContext()); 


     // session manager 
     session = new SessionManager(context.getApplicationContext()); 
/* 

     if (!session.isLoggedIn()) { 
      logoutUser(); 
     } 
*/ 

     // Fetching user details from SQLite 
     HashMap<String, String> user = db.getUserDetails(); 

     String name = user.get("name"); 
     //String email = user.get("email"); 
//  String email = user.get("email"); 
     String email = user.get("numero_telefonico"); 


     // Displaying the user details on the screen 
     System.out.println(name + email); 

     txtName.setText(name); 
     txtEmail.setText(email); 
    /* Button mButton = (Button) rootView.findViewById(R.id.button); 
     mButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       showResult(v); 


      } 
     });*/ 
     //return inflater.inflate(R.custom_spinner_items.fragment_list2, container, false); 
     btnLogout.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       logoutUser(); 
      } 
     }); 
    /* Spinner spinner = (Spinner) getView().findViewById(R.id.simpleSpinner); 
     ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, state); 
     adapter_state 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter_state); 
     spinner.setOnItemSelectedListener(this);*/ 


     return rootView; 
    } 

PLANETADAPTER:

public abstract class PlanetAdapter extends ArrayAdapter<Planet> implements CompoundButton.OnCheckedChangeListener 

{ 

    private List<Planet> planetList = null; 
    private Context context = null; 
    ArrayList<Birra> objects; 
    public boolean Checked; 
    private final Integer[] imageId; 

    public PlanetAdapter(List<Planet> planetList, Context context,Integer[] imageId) { 

     super(context, R.layout.single_listview_item, planetList); 
     this.planetList = planetList; 
     this.context = context; 
     this.imageId = imageId; 
    } 


    public class PlanetHolder { 
     public TextView planetName; 
     public TextView distView; 
     public TextView valuta; 
     public CheckBox chkBox; 
     public EditText edit; 
     public TextView caratteristica; 
     public boolean checked; 
     public TextView id; 
     public ImageView imageView; 
     public Spinner spinner; 
    } 

    @Override 
    public int getCount() { 
     return planetList.size(); 
    } 

    @Override 
    public Planet getItem(int position) { 
     return planetList.get(position); 
    } 




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

     View row = convertView; 
     PlanetHolder holder = null; 

     if (row == null) { 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      row = inflater.inflate(R.layout.single_listview_item, parent, false); 
      holder = new PlanetHolder(); 
      holder.planetName = (TextView) row.findViewById(R.id.name); 
      holder.distView = (TextView) row.findViewById(R.id.dist); 
      holder.valuta = (TextView) row.findViewById(R.id.valuta); 
      holder.chkBox = (CheckBox) row.findViewById(R.id.chk_box); 
      holder.edit = (EditText) row.findViewById(R.id.editText); 
      holder.spinner = (Spinner) row.findViewById(R.id.simpleSpinner); 

      holder.caratteristica=(TextView) row.findViewById(R.id.caratteristica); 
      holder.imageView = (ImageView) row.findViewById(R.id.ivImage); 
      holder.edit.setVisibility(View.GONE); 
      holder.edit.setEnabled(false); 
      holder.spinner.setVisibility(View.GONE); 

      // holder.id = (TextView) row.findViewById(R.id.id); 


      row.setTag(holder); 

     } else { 
      holder = (PlanetHolder) row.getTag(); 
     } 

     final Planet p = planetList.get(position); 
     holder.imageView.setImageResource(imageId[position]); 
     holder.planetName.setText(p.getName()); 
     holder.distView.setText("" + p.getDistance()); 
     holder.valuta.setText("" + p.getValuta()); 
     holder.chkBox.setChecked(p.isSelected()); 
     holder.chkBox.setTag(p); 
     holder.caratteristica.setText(p.getCaratteristica()); 
     holder.edit.setEnabled(false); 
     SharedPreferences states = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
     boolean isChecked = states.getBoolean("holder.chkBox" + holder.planetName.getText().toString(), false); 
     System.out.println(isChecked); 
     if (isChecked) { 
      holder.chkBox.setChecked(true); 
      holder.edit.setVisibility(View.VISIBLE); 
      holder.edit.setEnabled(true); 
      holder.spinner.setVisibility(View.VISIBLE); 

      SharedPreferences statess = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
      String string = statess.getString("finalHolder.edit" + holder.planetName.getText().toString(), holder.edit.getText().toString().trim()); 
      holder.edit.setText(string); 


     } else { 
      holder.chkBox.setChecked(false); 
      holder.edit.setVisibility(View.GONE); 
      holder.edit.setEnabled(false); 
      holder.spinner.setVisibility(View.GONE); 


     } 

     holder.chkBox.setOnCheckedChangeListener(PlanetAdapter.this); 
     // final BirraHolder finalHolder = birraHolder; 
     final PlanetHolder finalHolder = holder; 

     holder.chkBox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (finalHolder.chkBox.isChecked()) { 
        finalHolder.edit.setVisibility(View.VISIBLE); 
        finalHolder.edit.setEnabled(true); 
        finalHolder.spinner.setVisibility(View.VISIBLE); 
        SharedPreferences states = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
        SharedPreferences.Editor editor = states.edit(); 
        editor.putBoolean("holder.chkBox" + finalHolder.planetName.getText().toString(), true); 
        editor.commit(); 
        finalHolder.edit.addTextChangedListener(new TextWatcher() { 
         @Override 
         public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
         } 

         @Override 
         public void onTextChanged(CharSequence s, int start, int before, int count) { 
         } 

         @Override 
         public void afterTextChanged(Editable s) { 
          p.setQuantità(finalHolder.edit.getText().toString().trim()); 
          SharedPreferences states = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
          SharedPreferences.Editor editor = states.edit(); 
          editor.putString("finalHolder.edit" + finalHolder.planetName.getText().toString(), finalHolder.edit.getText().toString().trim()); 
          editor.commit(); 


         } 
        }); 

        /* SharedPreferences states = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
        SharedPreferences.Editor editor = states.edit(); 
        editor.putBoolean("holder.chkBox" + finalHolder.planetName.getText().toString(), true); 
        editor.commit();*/ 
        //Utility.putPizzaItem(p); 
        //Utility.getPizzaItem(p); 


       } else { 
        finalHolder.edit.setVisibility(View.GONE); 
        finalHolder.edit.setEnabled(false); 
        finalHolder.edit.setText(""); 
        finalHolder.spinner.setVisibility(View.GONE); 


       } 

      } 
     }); 
     /*holder.chkBox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (finalHolder.chkBox.isChecked()) { 
        finalHolder.edit.setVisibility(View.VISIBLE); 
        finalHolder.edit.setEnabled(true); 
        SharedPreferences states = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
        SharedPreferences.Editor editor = states.edit(); 
        editor.putBoolean("holder.chkBox", true); 
        //pizzaSelected.put(p.getId(), p); 
        System.out.println(p.getId()); 
       } else { 

        finalHolder.edit.setVisibility(View.GONE); 
        finalHolder.edit.setEnabled(false); 
        finalHolder.edit.setText(null); 
        pizzaSelected.remove(p.getId()); 

       } 

      } 
     }); 
*/ 


     /* finalHolder.edit.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       p.setQuantità(finalHolder.edit.getText().toString().trim()); 
       SharedPreferences states = getContext().getSharedPreferences("states", Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = states.edit(); 
       editor.putString("finalHolder.edit" + finalHolder.planetName.getText().toString(), finalHolder.edit.getText().toString().trim()); 
       editor.commit(); 


      } 
     }); 
*/ 

     // holder.planetName.setText(p.getName()); 
     // holder.distView.setText("" + p.getDistance()); 
     // holder.valuta.setText("" + p.getValuta()); 
     // holder.chkBox.setChecked(p.isSelected()); 
     // holder.chkBox.setTag(p); 
     // holder.edit.setEnabled(false); 
     // holder.id.setId(p.getId()); 

     return row; 
    } 

    ArrayList<Planet> getBox() { 
     ArrayList<Planet> box = new ArrayList<Planet>(); 
     for (Planet p : planetList) { 
      if (p.isSelected()) 
       box.add(p); 
     } 
     return box; 
    } 



    } 

FRAGMENT_LIST2:

<?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="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1" 
    android:layout_marginLeft="5dp" 
    ><!--android:onClick="showResult"--> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:gravity="center" 
     android:orientation="horizontal" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/welcome" 
     android:textSize="20dp" 
     android:layout_marginLeft="5dp" 
     /> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:textColor="@color/lbl_name" 
      android:textSize="24dp" 
      android:layout_marginLeft="5dp" 
      /> 

    <Button 
     android:id="@+id/btnLogout" 
     android:layout_width="122dp" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="40dip" 
     android:background="@color/btn_logut_bg" 
     android:text="@string/btn_logout" 
     android:textAllCaps="false" 
     android:textColor="@color/white" 
     android:textSize="15dp" 
     android:layout_marginLeft="5dp" 
     /> 

</LinearLayout> 

    <TextView 
     android:id="@+id/numero_telefonico" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="@color/lbl_name" 
     android:textSize="13dp" /> 

    <ListView 
     android:id="@+id/listview" 
     android:layout_width="fill_parent" 
     android:layout_height="400dp"> 

    </ListView> 
    <Spinner 
     android:id="@+id/simpleSpinner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="50dp" 
     android:entries="@array/country_arrays"/> 
<!-- <Button 
     android:id="@+id/button" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:onClick="showResult" 
     android:text="get_answer"> 
    </Button>--> 

    </LinearLayout> 

SINGLE_LISTVIEW_ITEM:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <CheckBox 
     android:id="@+id/chk_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" /> 
    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="5dp" 
     android:orientation="vertical" 
     android:layout_weight="1" > 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/chk_box" 
     android:textStyle="bold" 
     android:textColor="#000000" /> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:id="@+id/caratteristica" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/name" 
       android:layout_toRightOf="@id/chk_box" 
       android:textStyle="italic" /> 
     </LinearLayout> 

     <!-- <TextView 
      android:id="@+id/id" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:textSize="12sp" 
      android:textStyle="italic"/>--> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/dist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/caratteristica" 
     android:layout_toRightOf="@id/chk_box" 
     android:textSize="12sp" 
     android:textStyle="italic" /> 
     <TextView 
      android:id="@+id/valuta" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:textSize="12sp" 
      android:textStyle="italic" /> 
    </LinearLayout> 
    <EditText 
     android:layout_width="196dp" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:ems="10" 
     android:id="@+id/editText" 
     android:hint="quantità" 
     > 
    </EditText> 
     <Spinner 
      android:id="@+id/simpleSpinner" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="50dp" 
      android:entries="@array/country_arrays"/> 
    </LinearLayout> 
    <ImageView 
     android:id="@+id/ivImage" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_marginRight="5dp" 
     android:layout_gravity="center" 




     /> 
</LinearLayout> 

MyListAdapter:

public class MyListAdapter extends ArrayAdapter implements AdapterView.OnItemSelectedListener { 
    Spinner spinner; 

    /*public MyListAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    }*/ 

    public MyListAdapter(Context context) { 
     super(context, R.layout.single_listview_item); 
    } 





     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View row = convertView; 
      System.out.println("ciao"); 

      spinner = (Spinner) convertView.findViewById(R.id.simpleSpinner); 
      ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        getContext(), 
        R.array.country_arrays, 
        android.R.layout.simple_spinner_item); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(adapter); 
      spinner.setOnItemSelectedListener(this); 

/* 
      spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
*/ 
      /*  @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        //Spinner spinner = null; 
        // String selState = (String) ((Spinner) parent).getSelectedItem(); 

        spinner.setSelection(position); 
        String selState = (String) (parent).getSelectedItem(); 
        Toast.makeText(
          parent.getContext(), 
          "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show(); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 

       } 


      });*/ 



      return row; 
     } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     spinner.setSelection(position); 
     String selState = spinner.getSelectedItem().toString(); 
     System.out.println(selState); 
     Toast.makeText(
       getContext(), 
       "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show(); 
     /* Toast.makeText(parent.getContext(), 
       "OnItemSelectedListener : " + parent.getItemAtPosition(position).toString(), 
       Toast.LENGTH_SHORT).show();*/ 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 


    /* @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     String selState = (String) spinner.getSelectedItem(); 
     System.out.println(selState); 
     Toast.makeText(
       getContext(), 
       "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    }*/ 

    } 
+0

您應該附加'fragment_list2.xml'的內容。 – manfcas

+0

我貼了它.... – user6612196

回答

0

如果你想ListView的每一行內重複Spinner,你應該把它裏面single_listview_item.xml,而不是在fragment_list2.xml。然後,您通常在Fragment中加上fragment_list2.xml,查找ListViewfindViewById),實例化Adapter並將其設置爲ListViewsetAdapter)。 Adapter有責任加載single_listview_item.xml(以及Spinner)並設置它自己的Adapter。您不應該在Fragment內查找微調器,因爲一旦加載了它,就可以有多個實例(每行一個)。

所以,在你的FragmentonCreateView

ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list2, container, false); 
ListView listView = (ListView) rootView.findViewById(R.id.listview); 
ListAdapter listAdapter = new MyListAdapter(); 
listView.setAdapter(listAdapter); 

然後,在getView方法您MyListAdapter的:

Spinner spinner = (Spinner) convertView.findViewById(R.id.spinner); 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
          getContext(), 
          R.array.country_arrays, 
          android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

基本上,你必須實例裏面一個又一個的Adapter,所以你必須創建另一個班級(MyListAdapter)。

+0

我把它放到single_listview_item.xml中,但進入片段我記得fragment_list2.xml – user6612196

+0

所以我怎麼寫我的代碼? – user6612196

+0

沒有這個? spinner =(微調)rootView.findViewById(R.id.simpleSpinner); \t \t ArrayAdapter <的CharSequence>適配器= ArrayAdapter.createFromResource(this.getContext(), \t \t \t \t R.array.country_arrays,android.R.layout。simple_spinner_item); \t \t adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); \t \t spinner.setAdapter(adapter); \t \t spinner.setOnItemSelectedListener(this); – user6612196

相關問題