我无法清除有关应用程序的数据。如果我选择了我的老师的名字,将向我的老师展示日程安排。但是,在我选择了另一名教师后,第一位老师的数据时间表无法清除,并且仍然可以在最后一位教师的数据时间表上看到。
这是我的剧本 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;
JadwalDosenAdapter.java
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;
请帮帮我
答案 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中的更改
请尝试重用已创建的视图,这样可以减少工作量 应用程序为每个项目绘制新元素,并会给你更好的 列表视图的性能也是如此。
希望这能解决你的问题...