我已經成功從我的服務器獲取數據並將其顯示在ListView中,現在我想在ListView Items中實現Click事件。現在我在列表視圖中顯示「id」和「SomeText」。實現OnClickListener到ListView項目
我的問題是如何在ListView中實現一個Click事件,這樣,如果我點擊一個特定的行,它將顯示來自服務器的「id」(而不是從實際的數組開始「0」 )在吐司消息中。
下面是代碼和屏幕截圖,我正在點擊列表項時獲得什麼。
我希望有人能幫助我解決這個問題;任何鏈接或代碼片段都會非常有幫助。
非常感謝你。 恭
SCREENSHOT
CODE 公共類歡迎延伸活動{
public static String token;
String nam;
String dat;
String name;
JSONArray tasks;
long id2;
TextView textView;
ListView lvList;
private ArrayAdapter<String>mListData;
String emailAdd = "[email protected]";
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
//======================================================================================================
//======================== GETTING THE VALUE FROM THE SHARED PREF ======================================
SharedPreferences sharedpreferences = getSharedPreferences(Login.MyPREFERENCES, Context.MODE_PRIVATE);
token = sharedpreferences.getString("tokenKey","");
//Log.e("TOKEN", token);
//======================================================================================================
//=====================================================================================================
lvList = (ListView) findViewById(R.id.chat_drawer);
textView = (TextView) findViewById(R.layout.msg_chat);
mListData = new ArrayAdapter<String>(this, R.layout.msg_chat);
lvList.setAdapter(mListData);
mListData.setNotifyOnChange(true);
historyMessage();
}
private void historyMessage() {
// TODO Auto-generated method stub
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try{
HttpClient client = new DefaultHttpClient();
String SetServerString = "";
HttpGet httpget = new HttpGet("http://xxxx.xxx.com/api/v1/agent-tasks?token="+token);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
SetServerString = client.execute(httpget, responseHandler);
//Log.e("LIST vIEW ", SetServerString);
HttpResponse mike = client.execute(httpget);
HttpEntity entit = mike.getEntity();
dat = EntityUtils.toString(entit);
//Log.e("STRING From ", dat);
try{
JSONObject responseObject = new JSONObject(SetServerString);
JSONArray responseArray = responseObject.getJSONArray("response");
JSONObject firstResponse = responseArray.getJSONObject(0);
tasks = firstResponse.getJSONArray("tasks");
//System.out.println("asdfasdfsadf" + tasks);
runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0; i < tasks.length(); i++){
try{
JSONObject task = tasks.getJSONObject(i);
id2 = task.getInt("id");
name = task.getString("name");
String fulldata = id2 + "." + " " + name;
mListData.add(fulldata);
//mListData.notifyDataSetChanged();
ListView lvList = (ListView) findViewById(R.id.chat_drawer);
lvList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View viewClicked, int position,
long id2) {
// TODO Auto-generated method stub
TextView textView = (TextView) viewClicked;
String message = "you clicked #"+id2+" "+ ",which is string:"+ " " +textView.getText().toString();
Toast.makeText(Welcome.this, message, Toast.LENGTH_LONG).show();
}
});
}
catch (JSONException e){
e.printStackTrace();
}
}
}
});
} catch (JSONException e){
e.printStackTrace();
}
}catch (ClientProtocolException e){
Log.d("HTTPCLIENT", e.getLocalizedMessage());
} catch (IOException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
}
}
}).start();
}
上面的代碼將只給你的當前索引可見的數據,我會建議使用一個自定義的基礎適配器與onclick爲每個視圖/行,您設置爲標記或單獨的'textview'的id。 –