如何清除listview我的数据

时间:2016-12-27 15:13:17

标签: java android

我无法清除有关应用程序的数据。如果我选择了我的老师的名字,将向我的老师展示日程安排。但是,在我选择了另一名教师后,第一位老师的数据时间表无法清除,并且仍然可以在最后一位教师的数据时间表上看到。

这是我的剧本 JadwalDosen.java



package www.kates.com;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class JadwalDosen extends ListActivity{
	private JadwalDosenAdapter adapter;
	private Spinner dosen;
	private List<String> iddosen = new ArrayList<String>();
	@Override
	public void onCreate(Bundle bundle){
		super.onCreate(bundle);
		setContentView(R.layout.jadwaldosen);
		adapter = new JadwalDosenAdapter(this, getListView().getId());
		setListAdapter(adapter);
		dosen = (Spinner)findViewById(R.id.jadwalnamadosen);
		Connector con = new Connector("get_dosen.php","GET",null) {
			@Override
			public void onFinish(JSONArray data) {
				if(data!=null){
					if(data.length()>0){
						List<String> namaDosen = new ArrayList<String>();
						for(int i=0;i<data.length();i++){
							try {
								iddosen.add(data.getJSONObject(i).getString("IdDosen"));
								namaDosen.add(data.getJSONObject(i).getString("NamaDosen"));
							} catch (JSONException e) {
								e.printStackTrace();
							}
						}
						ArrayAdapter<String> sAdapter = new ArrayAdapter<String>(JadwalDosen.this, android.R.layout.simple_spinner_item,namaDosen);
						sAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
						dosen.setAdapter(sAdapter);
						dosen.setOnItemSelectedListener(new OnItemSelectedListener() {
							public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
								List<NameValuePair> info = new ArrayList<NameValuePair>();
								info.add(new BasicNameValuePair("id_dosen", iddosen.get(pos)));
								Connector con = new Connector("get_jadwal_dosen.php","GET",info) {
									@Override
									public void onFinish(JSONArray data) {
										if(data!=null){
											if(data.length()>0){
												for(int j=0; j<data.length();j++){
													try {
														adapter.add(data.getJSONObject(j));
														adapter.notifyDataSetChanged();
													} catch (JSONException e) {
														e.printStackTrace();
													}
												}
											}
										}
									}
								};
							}

							public void onNothingSelected(AdapterView<?> parent) {
								
							}
						});
					}
				}
			}
		};
	}
}
&#13;
&#13;
&#13;

JadwalDosenAdapter.java

&#13;
&#13;
package www.kates.com;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import org.json.JSONObject;

public class JadwalDosenAdapter extends ArrayAdapter<JSONObject>{

	public JadwalDosenAdapter(Context context, int resource) {
		super(context, resource);
	}
	@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final JSONObject item = getItem(position);
        if (!item.equals(null)) {
            View view = inflater.inflate(R.layout.jadwal_dosen_item, parent, false);
            try {
                ((TextView)view.findViewById(R.id.jadwal_makul)).setText(item.getString("NamaMakul"));
                ((TextView)view.findViewById(R.id.jadwal_kategori)).setText(item.getString("KategoriJadwal"));
                ((TextView)view.findViewById(R.id.jadwal_hari)).setText(item.getString("Hari"));
                ((TextView)view.findViewById(R.id.jadwal_jam)).setText("Jam ke- : " + item.getString("JamMulai") + " s/d " + item.getString("JamSelesai"));
                ((TextView)view.findViewById(R.id.jadwal_kelas)).setText(item.getString("NamaKelas"));
                ((TextView)view.findViewById(R.id.jadwal_ruang)).setText("Ruangan : " + item.getString("Ruang"));
            } catch (Exception exc) {
            	exc.printStackTrace();
            }
            return view;
        } else {
            return null;
        }
    }	
}
&#13;
&#13;
&#13;

请帮帮我

2 个答案:

答案 0 :(得分:0)

每当您选择一个teherher时,您还必须更新ID。所以添加行

iddosen = new ArrayList<String>(); 在这一行之上

`List<String> namaDosen = new ArrayList<String>();`

答案 1 :(得分:0)

在你的JadwalDosen.java文件中进行以下更改

info.add(new BasicNameValuePair("id_dosen", iddosen.get(pos)));
                                Connector con = new Connector("get_jadwal_dosen.php","GET",info) {
                                    @Override
                                    public void onFinish(JSONArray data) {
                                        if(data!=null){
                                            if(data.length()>0){

                                                for(int j=0; j<data.length();j++){
                                                    try {
                                                        adapter.add(data.getJSONObject(j));
                                                        adapter.notifyDataSetChanged();
                                                    } catch (JSONException e) {
                                                        e.printStackTrace();
                                                    }
                                                }
                                            }
                                        }
                                    }
                                };

此更改将在向其添加新值之前清除您的适配器,因此已删除prev选定教练的已存在值,您将只看到新值。

JadwalDosenAdapter.java中的更改

  

请尝试重用已创建的视图,这样可以减少工作量   应用程序为每个项目绘制新元素,并会给你更好的   列表视图的性能也是如此。

希望这能解决你的问题...