나는 listview를 사용하고 있는데 listitems의 수가있다. 모든 listitem과 함께 스피너를 추가해야합니다. customadapter를 사용하고 있는데 문제는 imageview를 사용할 수있는 이미지를 추가하는 것입니다. 회 전자 용으로는 무엇을 사용할 수 있습니까?어떻게 customadapter를 사용하여 목록보기에 스피너를 추가 할 수 있습니까?
답변
다음은 코드입니다.
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>
완벽하게 작동합니다. 스피너의 크기를 줄이고 스피너 근처에 텍스트 뷰를 유지하여 각 목록 항목에 스피너가있는 텍스트를 표시합니다. 텍스트에 클릭 이벤트가 없습니다. 모든 솔루션 PLZ 도움이됩니다. – arnp
이 솔루션을 사용할 때 스피너의 값을 다시 스크롤합니다. 다른 해결책이 있습니까? –
레이아웃 xml을 사용하여 행을 구성하려면 Spinner를 배치하십시오. 프로그래밍 방식으로 작업하는 경우 Spinner 클래스를 사용할 수 있습니다.
아니요 동적으로 회 전자를 생성하고 있습니다 – arnp
이 경우 Spinner는 ImageView와 비슷한 클래스 이름이므로 객체를 인스턴스화하고 추가 할 때 사용할 수 있습니다 –
스피너의 클래스 이름은'Spinner' ...입니까? –