2013-11-25 49 views
2

我想在主活动的ListView中添加微调器。将微调器添加为ListView数据

我在ListView中有十个项目,我想在ListView中添加该膨胀的微调控件(10次)。

我已经搜索了很多,但无法找到任何设置在ListView数据中的微调器。

有人可以帮我吗?

谢谢 大卫布朗。

回答

5

只需覆盖您的自定义适配器的getView方法。在这里你可以为你定义Spinner元素的ListView的每一行膨胀xml。我为你写了一个示例项目。它根据您的要求正常工作。将此视为一个框架项目并根据需要对其进行修改。

这里去了activity_main.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" > 
    </ListView> 

</RelativeLayout> 

这里去布局文件为ListView的每一行我已经把它命名为list_row.xml

<?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" > 

    <Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

这里而来的MainActivity.java

package com.example.so; 

import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.Spinner; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ListView listView=(ListView)findViewById(R.id.listView1); 
     CustomAdapter adapter=new CustomAdapter(); 
     listView.setAdapter(adapter); 
    } 

    @SuppressLint("ResourceAsColor") 
    class CustomAdapter extends BaseAdapter{ 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return 10; 
     } 

     @Override 
     public Object getItem(int arg0) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public long getItemId(int arg0) { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 

      LayoutInflater inflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 

      convertView=inflater.inflate(R.layout.list_row,parent,false); 

      Spinner spinner=(Spinner) convertView.findViewById(R.id.spinner1); 


      String[] colors={"Red","Green","Blue"}; 

      ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item,colors); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(adapter); 
      return convertView; 
     } 

    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Hope我的努力可以帮助你。

1

如果要实现ICSSpinner,请按照下列步骤操作。

中序实现这一点,你需要ActionbarSherlock库

的IcsSpinner小部件添加到您的layout.xml:

<com.actionbarsherlock.internal.widget.IcsSpinner 
    android:id="@+id/spinner_id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:entries="@array/entries" /> 

Access your spinner via code: 

IcsSpinner mySpinner = (IcsSpinner)findViewById(R.id.spinner_id);