從Web服務獲取我的數據並加載到列表視圖。哪個工作正常。但是當我點擊一個特定的列表項時,我需要將該記錄的id(Id應該來自數據庫)傳遞給另一個活動。這裏是我填充陣列將數據加載到帶有記錄ID的android列表視圖並傳遞確切的記錄ID onListItemClick
public String[] getNames(String response){
String[] friends = null;
try {
JSONObject json = new JSONObject(response);
String values = json.getString("friends");
JSONArray jsonArray = new JSONArray(values);
friends = new String[jsonArray.length()];
//Bundle b = new Bundle();
for (int i = 0; i < jsonArray.length(); i++) {
friends[i] = jsonArray.getJSONObject(i).getString("fname")+ " " + jsonArray.getJSONObject(i).getString("lname") ;
friends[i+1] = jsonArray.getJSONObject(i).getString("id");
//i++;
//friends[i]= jsonArray.getJSONObject(i).getString("id");
}
} catch (Exception e) {
e.printStackTrace();
}
return friends;
}
這是我試着去獲取名稱代碼代碼和IDS
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the item that was clicked
Object o = this.getListAdapter().getItem(position);
String name = o.toString();
Object x = this.getListAdapter().getItem(position+1);
String userid= x.toString();
Toast.makeText(this, "You selected: " + name +"The Id: "+userid, Toast.LENGTH_LONG)
.show();
}
這是我的xml文件列表視圖
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffff"
>
<ImageView
android:id="@+id/icon"
android:padding="2dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/man"
/>
<TextView
android:id="@+id/txtName"
android:layout_width="210px"
android:layout_height="60px"
android:padding="4dp"
android:textSize="12sp"
android:textColor="#000000"
android:background="#ffffff"
/>
</LinearLayout>
這是我如何填充列表視圖
public void setTheList(String response){
String friends[] = getNames(response);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
if(adapter==null){
LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.header, lv, false);
lv.addHeaderView(header, null, false);
}
adapter = new MyArrayAdapter(this, friends);
this.setListAdapter(adapter);
}
}
這是我的適配器。我是從here
package virtualpathum.web;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class MyArrayAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] names;
public MyArrayAdapter(Activity context, String[] names) {
super(context, R.layout.friend, names);
this.context = context;
this.names = names;
}
// static to save the reference to the outer class and to avoid access to
// any members of the containing class
static class ViewHolder {
public ImageView imageView;
public TextView textView;
public ImageButton ibConfirm;
public ImageButton ibNotNow;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ViewHolder will buffer the assess to the individual fields of the row
// layout
ViewHolder holder;
// Recycle existing view if passed as parameter
// This will save memory and time on Android
// This only works if the base layout for all classes are the same
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.friend, null, true);
holder = new ViewHolder();
holder.textView = (TextView) rowView.findViewById(R.id.txtName);
holder.imageView = (ImageView) rowView.findViewById(R.id.icon);
//holder.ibConfirm = (ImageButton) rowView.findViewById(R.id.ibNotNow);
//holder.ibNotNow= (ImageButton) rowView.findViewById(R.id.ibNotNow);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
holder.textView.setText(names[position]);
// Change the icon for Windows and iPhone
String s = names[position];
holder.imageView.setImageResource(R.drawable.man);
return rowView;
}
}
,如果你有想法這個 感謝 巴吞他
發佈您如何填充視圖的代碼。 –
@YashwanthKumar我更新了代碼。請立即檢查 – virtualpathum