更新基于android的微调选择ListView项 [英] Update the ListView Item based on Spinner selection in android

查看:170
本文介绍了更新基于android的微调选择ListView项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前正在与spinner.MY要求列表视图的工作是更新的基础上微调选择ListView项是在列表视图项itself.but而在微调在进行选择它的更新列表视图都认为items.I我的问题是,在

Currently am working on listview with spinner.MY requirement is update the listview item based on spinner selection which is in listview item itself.but while performing the selection in spinner it update the all listview items.I think my problem is with in

OnItemSelectedListener

OnItemSelectedListener

。而我也想出加载列表视图微调ItemSelectedListener执行任何times.I不懂希望我有做过this.Please帮我找到它的解决方案。

.And also i figure out while loading listview the spinner ItemSelectedListener executes no of times.I don't understand want i have done on this.Please help me to find the solution for it.

微调OnItemSelected监听器code是

Spinner OnItemSelected Listener code is

    viewHolder.description.setOnItemSelectedListener(new  AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                //here the position represents the listview item position
                Log.e("Position of Data is ", Integer.toString(position));
                //here the fullListData.get(pos) get the data from spinner based on selection 
                datas.set(position, fullSeatList.get(pos));
               //here am update the listview item data with selected spinner data
                datas.get(position).getDescription());
                Log.e("Data in lisr", datas.get(position).getPartNo());
                notifyDataSetChanged();
          }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

编辑1:
我的适配器类是

EDIT 1: My Adapter class is

public class ListViewAdapter extends BaseAdapter {

Context context;
ArrayList<SeatConfigCustomObjects> datas;
ArrayList<SeatConfigCustomObjects> fullSeatList;
ArrayAdapter<SeatConfigCustomObjects> adapter;
public ListViewAdapter(Context context, ArrayList<SeatConfigCustomObjects> datas, ArrayList<SeatConfigCustomObjects> fullSeatList) {
    this.context = context;
    this.datas = datas;
    this.fullSeatList=fullSeatList;


}

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

@Override
public Object getItem(int position) {
    return datas.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder viewHolder;
    if(convertView==null){
        convertView=((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.seat_config_listview_item,null);
        viewHolder=new ViewHolder();
        viewHolder.partNo=(TextView)convertView.findViewById(R.id.seat_config_listview_partno);
        viewHolder.description=(Spinner)convertView.findViewById(R.id.seat_config_listview_description_spinner);
        viewHolder.quantity=(TextView)convertView.findViewById(R.id.seat_config_listview_quantity);
        convertView.setTag(viewHolder);
    }
    else{
        viewHolder=(ViewHolder)convertView.getTag();
    }
    viewHolder.partNo.setText(datas.get(position).getPartNo());
     adapter=new ArrayAdapter<SeatConfigCustomObjects>(context,android.R.layout.simple_dropdown_item_1line,fullSeatList);
    adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
    viewHolder.description.setAdapter(adapter);
    viewHolder.description.setSelection(0, false);
    viewHolder.description.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                Log.e("Position of Data is ", Integer.toString(position));
                datas.set(position, fullSeatList.get(pos));
                Log.e("Data in description", datas.get(position).getDescription());
                Log.e("Data in lisr", datas.get(position).getPartNo());
                notifyDataSetChanged();

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

        }
    });
    viewHolder.quantity.setText(Integer.toString(datas.get(position).getQunatity()));

    return convertView;
}

public class ViewHolder{
    TextView partNo;
    Spinner description;
    TextView quantity;

}

}

推荐答案

请您数组列表公开(的从主类访问的)的基础转接器类,然后添加字符串名单上按一下按钮,并调用 notifyDataSetChanged(); 我已经按照您的方便显示在下面,请您及时改变变量...

Make your array-list public (to access it from main class) in base adapter class then add String to list on button click,and call notifyDataSetChanged(); I have shown it below .Please change variable according to your convenience...

viewHolder.description.setOnItemSelectedListener(new  AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
       ListViewAdapter <object>;   //Adapter class object
       <object>.datas.add("");  //-----string,position---//
       notifyDataSetChanged();
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
});

Adapter类:

Adapter class :

public class ListViewAdapter extends BaseAdapter {

  public ArrayList<SeatConfigCustomObjects> datas;
  //-- rest of code--- ///
}

这篇关于更新基于android的微调选择ListView项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆