2

カスタム リスト ビューを作成しました。arrayadapterをサブクラス化することにより、カスタムアダプターを使用して連絡先の詳細のリストを追加しました。リストで特定の連絡先を選択すると、選択した詳細を取得する必要があることを意味します。どうすればこれを達成できますか。ここで私のコーディング、

public class ContactListAdapter extends ArrayAdapter<ContactList> {

    Context context;
    int layoutResourceId;
    ContactList objects[] = null;

    View row;

    public ContactListAdapter(Context context, int layoutResourceId, ContactList[] objects) {
        super(context, layoutResourceId, objects);
        // TODO Auto-generated constructor stub

        this.context = context;
        this.layoutResourceId = layoutResourceId;
        this.objects = objects;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        row = convertView;
        final ContactListHolder holder;

        if ( row == null ) {

            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new ContactListHolder();
            holder.image    = (ImageView) row.findViewById(R.id.contactImage);
            holder.name     = (TextView) row.findViewById(R.id.contactName);
            holder.number   = (TextView) row.findViewById(R.id.contactNumber);
            holder.check    = (CheckBox) row.findViewById(R.id.selectedContact);
            holder.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub


                }
            });

            row.setTag(holder);
            holder.check.setTag(objects[position]);

        } else {

            holder = (ContactListHolder) row.getTag();
            holder.check.setTag(objects[position]);
        }

        ContactList contact = objects[position];
        if(contact.imageIcon != null) {

            Bitmap imgBitmap = BitmapFactory.decodeByteArray(contact.imageIcon, 0, contact.imageIcon.length);
            holder.image.setImageBitmap(imgBitmap);
        } else {

            holder.image.setImageResource(R.drawable.ic_launcher);
        }

        holder.name.setText(contact.name);
        holder.number.setText(contact.number);
        holder.check.setChecked(objects[position].isSelected());    

        return row;

    }

    static class ContactListHolder {

        ImageView image;
        TextView name;
        TextView number;
        CheckBox check;
    }
}

マニンアクティビティでは、リストビューを次のように使用しました。

ContactList contactList[] = new ContactList[MyTrackList.size()];

            for(int i=0;i<MyTrackList.size();i++) {

                MyContact contact = MyTrackList.get(i);
                contactList[i] = new ContactList(contact.getName(), contact.getNumber(), contact.getImage());

            }

            ContactListAdapter adapter = new ContactListAdapter(this, R.layout.manage_track_list_custom_view, contactList);

            trackList = (ListView) findViewById(R.id.manage_track_listView);
            trackList.setAdapter(adapter);

ここで連絡先リストは、多くのオブジェクトを持つクラスです。

私はこの方法で試しましたが、うまくいきません。私を導いてください。前もって感謝します。

4

3 に答える 3

0

最初に、リスト項目を表示するための XML レイアウトで onclick リスナーを定義します。これは、属性android:onClick="methodName"を最上位のレイアウト ビューに追加することによって行われます。

次に、メイン アクティビティで、ユーザーがリスト アイテムをタップしたときに呼び出される、XML レイアウトで定義されたメソッド (つまり、methodName( View v )) を実装する必要があります。

于 2012-06-25T04:33:43.493 に答える
0

これを試して、

  1. onItemClickListener()を使用する

例えば:

ListView lv = (ListView)findViewById(R.id.myList);

lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemSelected(AdapterView<?> parent, View view, int position, long i) 
            {
                  // Get the item here
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });
于 2012-06-25T04:42:56.143 に答える
0

設定setOnItemClickListenerまたはsetOnItemSelectedListenerリストすると、クリックして選択した項目の呼び出しが取得されます...

 setOnItemClickListener

この AdapterView のアイテムがクリックされたときに呼び出されるコールバックを登録します。

trackList.setOnItemClickListener(new OnItemClickListener() 
   {
   public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {
              contact =  contactList[position]          
   }
 });

..

setOnItemSelectedListener

この AdapterView のアイテムが選択されたときに呼び出されるコールバックを登録します。

 trackList.setOnItemSelectedListener(new OnItemSelectedListener() 
            {
                public void onItemSelected(AdapterView<?> parent, View view, int position, long i) 
                {
                      // TODO Auto-generated method stub

                                   contact =  contactList[position] 
                                   //   or 
                                // Object obj= parent.getItemAtPsotion(position);
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
于 2012-06-25T04:21:51.610 に答える