Я получаю свои данные из веб-службы и загружаю их в список. Который работает нормально. но когда я щелкаю по определенному элементу списка, мне нужно передать идентификатор этой записи (идентификатор должен исходить из базы данных) другому действию. Вот код, где я заполняю массив
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;
}
Это код, который я пытаюсь получить имя и идентификаторы
@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);
}
}
Это мой адаптер. Я получил это от здесь
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;
}
}
Действительно признателен, если у вас есть представление об этом
Спасибо
Pathum