ตอนนี้มีโค้ดที่ติดต่อกับเว็บเซอร์วิสแล้วค่ะ แต่ไม่รู้ว่าจะให้ดึงข้อมูลจากเว็บเซอร์วิสทุกๆ5วินาทีหรือทุกๆเวลาตามเวลาที่เรากำหนดอย่างไรอะคะ ช่วยหน่อยนะคะๆ ขอบคุณล่วงหน้าค่ะ
public class ShowNews extends TestDBActivity {
private static final String SOAP_ACTION = “urn:utknewswsdl/showNews”;
private static final String METHOD_NAME = “showNews”;
private static final String NAMESPACE = “urn:utknewswsdl”;
private int Id,idUser,numNews;
private String Topic;
private String Detail;
private String Date;
private String Time;
private String name;
//private ListView myListView;
private TextView txtUser;
private String userId;
private Handler mHandler;
private MyCustomBaseAdapter listLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shownews);
ArrayList news = GetNews();
final ListView lv1 = (ListView) findViewById(R.id.listView1);
listLayout = new MyCustomBaseAdapter(this, news);
lv1.setAdapter(listLayout);
listLayout.notifyDataSetChanged();
lv1.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView a, View v, int position,long id) {
Object o = lv1.getItemAtPosition(position);
News fullObject = (News)o;
// Toast.makeText(ShowNews.this,”หัวข่าว : “+fullObject.getNewsTopic(),Toast.LENGTH_LONG).show();
Intent goDetailNews = new Intent(ShowNews.this,DetailNews.class);
goDetailNews.putExtra(“topic”,fullObject.getNewsTopic());
goDetailNews.putExtra(“detail”,fullObject.getNewsDetail());
goDetailNews.putExtra(“annDay”,fullObject.getDayApp());
startActivity(goDetailNews);
}});
}
private ArrayList GetNews(){
ArrayList results = new ArrayList();
News item1 ;
SharedPreferences prefs = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
idUser = prefs.getInt(“Id1”,0);//เอาค่าที่เก็บไว้ในตัวแปร Id1 มาเก็บไว้ใน idUser
userId = prefs.getString(“userId”, “”);
URL = “http://”+iPServer+”/AndroidProject/News_ws.php”;
txtUser = (TextView)findViewById(R.id.txtUserShownewsPage);
txtUser.setText(userId);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty(“arg1”,idUser); // login-account
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try { //รับค่าที่ส่งเป็นอาเรย์ 2 มิติจากเว็บเซอร์วิส
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject so = (SoapObject)envelope.bodyIn; //รับข้อมูลจากเว็บเซอร์วิส
Vector rs = (Vector) so.getProperty(0);
numNews = rs.size(); // จำนวนข่าวที่ได้รับ
//SharedPreferences prefs = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
Editor mEditor = prefs.edit();
mEditor.putInt(“numNews”, numNews); //เก็บจำนวนข่าวไว้ใน SharedPreferences
mEditor.commit();
if(numNews>0){
for(int j = 0;j < numNews; j++ ){
SoapObject shRs = (SoapObject) rs.get(j); //get(1)เปลี่ยนตัวเลขในget ก็จะได้ข่าวที่ส่งมาแต่ละข่าว
Id = Integer.parseInt(shRs.getProperty(0).toString());
Topic = new String(shRs.getProperty(1).toString().getBytes("iso-8859-1"),"utf-8"); //.getBytes("iso-8859-1"),"utf-8" ทำให้แสดงเป็นภาษาไทยได้
Detail = new String(shRs.getProperty(2).toString().getBytes("iso-8859-1"),"utf-8");
Date = shRs.getProperty(3).toString(); //วันที่ส่ง
Time = shRs.getProperty(4).toString(); //เวลาส่ง
name = new String(shRs.getProperty(5).toString().getBytes("iso-8859-1"),"utf-8");//ผู้ส่ง
item1 = new News();
item1.setNewsId(Id);
item1.setNewsTopic(Topic);
item1.setNewsDetail(Detail);
item1.setNewsDate(Date);
item1.setNewsTime(Time);
item1.setAnnouncer(name);
//item1.setNumNewsRev(numrs);
results.add(item1);
}
}
else{
Toast.makeText(ShowNews.this,"ไม่มีรายการข่าวส่งถึงคุณ"+idUser,Toast.LENGTH_LONG).show();
}
}
catch(Exception aE)
{
aE.printStackTrace();
}
return results;
}
}
โปรแกรมยุ่งยากมากเลยนะครับ
ลองใช้ภาษา Basic ดูหรือเปล่าครับ มี Community ที่อบอุ่นช่วยเหลือกันดีมากครับ
Click here for detail