2011-09-16 6 views
0

나는 listview를 사용하고 있는데 listitems의 수가있다. 모든 listitem과 함께 스피너를 추가해야합니다. customadapter를 사용하고 있는데 문제는 imageview를 사용할 수있는 이미지를 추가하는 것입니다. 회 전자 용으로는 무엇을 사용할 수 있습니까?어떻게 customadapter를 사용하여 목록보기에 스피너를 추가 할 수 있습니까?

+1

스피너의 클래스 이름은'Spinner' ...입니까? –

답변

2

다음은 코드입니다.

package com.android.main; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
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 DemoListSpinnerActivity extends Activity { 
    ListView _listview; 
    String[] itemsarray=new String[]{"one","two","three"}; 
    ArrayAdapter<String> adapter; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,itemsarray); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     _listview=(ListView)findViewById(R.id.listView1); 
     _listview.setAdapter(new CustomAdapter(this)); 

    } 

    private class CustomAdapter extends BaseAdapter 
    { 
     LayoutInflater inflater; 
     public CustomAdapter(Context context) 
     { 
      inflater=LayoutInflater.from(context); 
     } 

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

     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     public View getView(int arg0, View convertview, ViewGroup arg2) { 
      ViewHolder viewHolder; 
      if(convertview==null) 
      { 
       convertview=inflater.inflate(R.layout.listrow,null); 
       viewHolder=new ViewHolder(); 
       viewHolder.spinner=(Spinner)convertview.findViewById(R.id.spinner1); 
       viewHolder.spinner.setAdapter(adapter); 
       convertview.setTag(viewHolder); 
      } 
      else 
      { 
       viewHolder=(ViewHolder)convertview.getTag(); 
      } 
      return convertview; 
     } 
     public class ViewHolder 
     { 
      Spinner spinner; 
     } 

    } 
} 
main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
<ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="match_parent"></ListView> 
</LinearLayout> 
listrow.xml 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Spinner android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/spinner1"></Spinner> 

</LinearLayout> 
+0

완벽하게 작동합니다. 스피너의 크기를 줄이고 스피너 근처에 텍스트 뷰를 유지하여 각 목록 항목에 스피너가있는 텍스트를 표시합니다. 텍스트에 클릭 이벤트가 없습니다. 모든 솔루션 PLZ 도움이됩니다. – arnp

+0

이 솔루션을 사용할 때 스피너의 값을 다시 스크롤합니다. 다른 해결책이 있습니까? –

0

레이아웃 xml을 사용하여 행을 구성하려면 Spinner를 배치하십시오. 프로그래밍 방식으로 작업하는 경우 Spinner 클래스를 사용할 수 있습니다.

+0

아니요 동적으로 회 전자를 생성하고 있습니다 – arnp

+0

이 경우 Spinner는 ImageView와 비슷한 클래스 이름이므로 객체를 인스턴스화하고 추가 할 때 사용할 수 있습니다 –