2

授業がある

public class User
{
   UUID id;
   String name;
}

ListViewにこれを渡したい:「名前」だけをリストして表示する。しかし、リストビューのアイテムが選択されるとき、選択されたアイテムの「id」を知りたいです。

4

2 に答える 2

4

まず、両方の情報を含むクラスを作成します。

public class MyItem {

public final String name;
public final String id;

public MyItem(String name, String id) {
    this.name = name;
    this.id = id;
 }

}

次に、このクラスをサポートできるカスタムアダプタを作成します。

public class CustomAdapter extends ArrayAdapter<MyItem> {

private Context context;
private ArrayList<MyItem> items;
private LayoutInflater vi;

public EntryAdapter(Context context,ArrayList<MyItem> items) {
    super(context,0, items);
    this.context = context;
    this.items = items;
    vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    final Item i = items.get(position);
    if (i != null) {
            v = vi.inflate(R.layout.list_item, null); //custom xml for desired view
            //do what ever you need to

    }
    return v;
     }

     }

MyItemの配列にデータを入力し、配列を使用してカスタムアダプタを作成します。

items = new ArrayList<MyItem>(); // then populate it
myAdapter = new CustomAdapter(this, items);

次に、ListViewを設定し、OnItemClickListenerを使用します

myList.setAdapter(myAdapter);

    myList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parentView, View view, int position,
                long id) 
        {
                ((MyItem)myAdapter.getItem(position)).id); //this line gets you the id of the clicked item

        }
    });
于 2012-09-05T16:55:01.010 に答える
1

オブジェクトを配列リストに格納します。

Arraylist<User> al = new ArrayList<User>();

次に、を使用してオブジェクトを配列リストに追加します

 User user = new User(); 
 user.id = somevalue;
 user.name = someNameValue;
 al.add(user);

次にonitemclick()でアイテムをクリックし、次にarraylistアイテムを使用して表示します

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

Toast.makeText(this, "item clicked is " + arg2+al.get(arg2).id+"  "al.get(arg2).name,     
 Toast.LENGTH_SHORT)
 .show();
}
}
于 2012-09-05T16:46:06.650 に答える