【问题标题】:update listview using spinner data in android在android中使用微调器数据更新listview
【发布时间】:2015-12-12 05:28:47
【问题描述】:

我正在尝试在 spinner 的每个选择上更新我的 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();

        }
    }

在选择spinner 数据后,它被发送到服务器,并从服务器获取其相关数据并发送回列表视图。现在,当我第一次选择微调器时,它会相应地显示数据。但在第二次选择时,它将包含以前的数据而不更新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 没有更新为新值

任何帮助都会很重要。

【问题讨论】:

  • 我不知道为什么这篇文章被否决了。但我需要一些关于这个问题的建议。

标签: android listview android-listview android-spinner


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 它不工作。每次都取之前加载的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多