Android 从ListView的自定义BaseAdapter动态添加元素
我有这个定制的BaseAdapter。我一行有3个纺纱机。我希望在一行上的每个微调器都有一个选中的项之后,另一行会以友好的方式添加到listview并显示出来。我怎样才能做到这一点?这就是我试过的Android 从ListView的自定义BaseAdapter动态添加元素,android,listview,baseadapter,Android,Listview,Baseadapter,我有这个定制的BaseAdapter。我一行有3个纺纱机。我希望在一行上的每个微调器都有一个选中的项之后,另一行会以友好的方式添加到listview并显示出来。我怎样才能做到这一点?这就是我试过的 public MateriiAdapter (Activity a, ArrayList<YTOMaterie> orar) { this.orar = orar; activity = a; inflater = ( LayoutInfl
public MateriiAdapter (Activity a, ArrayList<YTOMaterie> orar) {
this.orar = orar;
activity = a;
inflater = ( LayoutInflater )activity.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
if(orar.size()<=0)
return 1;
return orar.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder{
public NoDefaultSpinner spinnerOra;
public NoDefaultSpinner spinnerMinute;
public NoDefaultSpinner spinnerMaterii;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.item_materie, null);
holder = new ViewHolder();
holder.spinnerOra = (NoDefaultSpinner) vi.findViewById(R.id.spOra);
holder.spinnerMinute = (NoDefaultSpinner) vi.findViewById(R.id.spMinute);
holder.spinnerMaterii = (NoDefaultSpinner) vi.findViewById(R.id.spMaterii);
final boolean[] oraSelectata = {false};
final boolean[] minSelectat={false};
final boolean[] materieSelectata={false};
holder.spinnerOra.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
oraSelectata[0] = true;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
holder.spinnerMinute.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
minSelectat[0] = true;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
holder.spinnerMaterii.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
materieSelectata[0] = true;
if(materieSelectata[0] == true && oraSelectata[0] == true
&& minSelectat[0] == true) {
YTOMaterie y = new YTOMaterie();
orar.add(y);
notifyDataSetChanged();
materieSelectata[0] = false;
oraSelectata[0] = false;
minSelectat[0] = false;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
vi.setTag( holder );
}
else
holder=(ViewHolder)vi.getTag();
if(orar.size()<=0) {
} else {
tempValue=null;
tempValue = ( YTOMaterie ) orar.get( position );
}
return vi;
}
好的,我举了两个简单的微调器的例子,它们动态地相互依赖。这里是代码,您可以选择任意数量的微调器,并动态地更改它们的onItemSelectedListener回复上的值,如果您没有得到answar想要的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
course=new ArrayList<String>();
techbranch=new ArrayList<String>();
lawbranch=new ArrayList<String>();
branch=new ArrayList<String>();
course.add("Course");
course.add("Tech");
course.add("Law");
techbranch.add("CS");
techbranch.add("IT");
techbranch.add("ME");
techbranch.add("ECE");
lawbranch.add("CRIME LAW");
lawbranch.add("LABOUR LAW");
lawbranch.add("CORPORATE Law");
lawbranch.add("BUSINESS Law");
spinner1=(Spinner)findViewById(R.id.spinner1);
spinner2=(Spinner)findViewById(R.id.spinner2);
adapter1=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_dropdown_item_1line,course);
spinner1.setAdapter(adapter1);
adapter2=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, branch);
spinner2.setAdapter(adapter2);
spinner1.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int pos,
long id) {
switch(pos)
{
case 1:
branch.clear();
branch.addAll(techbranch);
adapter2.notifyDataSetChanged();
break;
case 2:
branch.clear();
branch.addAll(lawbranch);
adapter2.notifyDataSetChanged();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
这不是我要问的,你在类的顶部实现了OnItemSleetCedListener注册你想要监听的微调器事件,并在OnItemClickListener动态更新你想要更改的适配器,然后调用notifydatasetchanged你会得到你想要的…试试这个你不说sherlock。这就是我正在尝试的,请提供更多的细节,你到底想要什么???您已经在问题陈述中写入了我希望在一行上的每个微调器都有一个选中的项之后,另一行被动态添加到listview并显示出来,因此我已经编写了在微调器中动态添加值的代码。