使用 android 中的微调器数据更新列表视图

update listview using spinner data in android

我正在尝试在 spinner 的每个 select 离子上更新我的 listview。但它不工作。 listview 没有获取新数据,而是重复相同的值。

我无法找出我的错误。

这是我的活动代码:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        setContentView(R.layout.activity_performance_details);

        PerfList = new ArrayList<PerformanceListItem>();
        months = (Spinner) findViewById(R.id.load_month);
        listview_performance = (ListView)     findViewById(R.id.performance_details_list);
        sadapter = new PerformanceAdapter(PerformanceDetails.this, PerfList);


        months.setOnItemSelectedListener(this);

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

         Spinner a=(Spinner)parent;
        if(a.getId() == R.id.load_month) {
            monthid =1+(int)months.getSelectedItemPosition();
       Toast.makeText(getApplicationContext(),""+monthid,Toast.LENGTH_LONG).show();
            new setAsyncTask_performance().execute();

        }
    }

在 selecting spinner 数据后,它被发送到服务器,并从服务器获取其相关数据并发送回列表视图。现在,当我第一次 select 微调器时,它会相应地显示数据。但是在第二个 selection 上它将包含以前的数据而不更新 listview

适配器代码:

    public class PerformanceAdapter extends BaseAdapter {

    private Activity activity;
    private LayoutInflater inflater;
    private Context context;
    private List<PerformanceListItem> performanceList;

    public PerformanceAdapter(Activity activity, List<PerformanceListItem> PList) {

        this.activity = activity;
        this.performanceList = PList;

    }




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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (inflater == null) {
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        if (convertView == null) {

            convertView = inflater.inflate(R.layout.performance_itemlist, null);
        }
        Animation slideUp = AnimationUtils.loadAnimation(activity, R.anim.slide_up);

        TextView staffName = (TextView) convertView.findViewById(R.id.perf_staffName);
        TextView staffDesignation = (TextView) convertView.findViewById(R.id.perf_Design);
        TextView staffPerformance = (TextView) convertView.findViewById(R.id.perf_performance);


        PerformanceListItem plist = performanceList.get(position);

        staffName.setText(plist.getpStaffName());
        staffDesignation.setText(plist.getpDesignation());
        staffPerformance.setText(plist.getpPerformance());

        slideUp.setDuration(500);
        convertView.startAnimation(slideUp);
        slideUp = null;
        return convertView;
    }
}

这是我获取和设置数据的性​​能列表

PerformanceListItems 代码:

 public class PerformanceListItem {
    private String pSid;
    private String pStaffName;
    private String pDesignation;
    private String pPerformance;
    private String pList;

    public PerformanceListItem(){

    }

    public PerformanceListItem(String pList){
        this.pList = pList;

    }

    public String getpSid(){
        return pSid;
    }
    public void setpSid(String pSid){
        this.pSid = pSid;
    }
    public String getpStaffName(){
        return pStaffName;

    }

    public void setpStaffName(String pStaffName){
        this.pStaffName = pStaffName;
    }

    public String getpDesignation(){
        return pDesignation;
    }

    public void setpDesignation(String pDesignation){
        this.pDesignation = pDesignation;
    }

    public String getpPerformance(){
        return pPerformance;
    }

    public void setpPerformance(String pPerformance){
        this.pPerformance = pPerformance;
    }
}

调试整个代码后,我发现我的 JSONObject 没有更新新值

任何帮助将不胜感激。

执行此操作时更新适配器的数据 新 setAsyncTask_performance().execute();

如果您只想显示新数据,只需删除所有列表视图项目,然后更新数据并重新设置适配器。

不要在 oncreate 中设置适配器。在 Asynctask Post 执行中设置你的适配器。并在 doinbackground 中设置你的数组以及获取数据任务。