1

私は Android プログラミングの初心者なので、噛まないでください。

私は、携帯電話から連絡先リストを取得し、チェックボックスを使用して N 件を選択できるアプリケーションで作業しています。後で、選択した連絡先を使用してパーティーに招待したいと考えています。私がこれで新しいと言ったように、これは私がこれまでに持っているものです:

Main.java:

package com.example.choosephoneactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;


    public class main extends Activity implements OnClickListener {
        private static final int REQUEST_CHOOSE_PHONE = 1;
        private TextView vPhone;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            vPhone = (TextView) findViewById(R.id.TextView01);
            findViewById(R.id.Button01).setOnClickListener(this);
            vPhone.setText("");
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if ((requestCode == REQUEST_CHOOSE_PHONE)
                    && (resultCode == Activity.RESULT_OK)) {
                try {
                    String phone = data.getStringExtra("phone");
                    vPhone.setText(phone);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        public void onClick(View v) {
            Intent intent = new Intent("org.francho.CHOOSE_PHONE");
            startActivityForResult(intent, REQUEST_CHOOSE_PHONE);
        }
    }

List.java (電話から連絡先リストを取得する Java ファイル)

package com.example.choosephoneactivity;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.CheckBox;
import android.widget.SimpleCursorAdapter;



public class list extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);
        setTitle("Choose a phone");

        // Query: contacts with phone shorted by name
        Cursor mCursor = getContentResolver().query(
                Data.CONTENT_URI,
                new String[] { Data._ID, Data.DISPLAY_NAME, Phone.NUMBER,
                        Phone.TYPE },
                Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "' AND "
                        + Phone.NUMBER + " IS NOT NULL", null,
                Data.DISPLAY_NAME + " ASC");

        startManagingCursor(mCursor);

        // Setup the list
        ListAdapter adapter = new SimpleCursorAdapter(this, // context
                android.R.layout.simple_list_item_2, // Layout for the rows
                mCursor, // cursor
                new String[] { Data.DISPLAY_NAME, Phone.NUMBER }, // cursor
                                                                    // fields
                new int[] { android.R.id.text1, android.R.id.text2 } // view
                                                                        // fields
        );
        setListAdapter(adapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Intent result = new Intent();

        // Get the data
        Cursor c = (Cursor) getListAdapter().getItem(position);
        int colIdx = c.getColumnIndex(Phone.NUMBER);
        String phone = c.getString(colIdx);

        // Save the phone to return it to the caller
        result.putExtra("phone", phone);
        setResult(Activity.RESULT_OK, result);

        // Close this activity (return to caller)
        finish();
    }
}

メイン.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal">

<TextView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="@+id/TextView01" 
    android:id="@+id/TextView01">
    /</TextView>

<Button 
    android:id="@+id/Button01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Invitar a Convivencia">

</Button>

</LinearLayout>

リスト.XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"    />

<TextView
    android:id="@android:id/empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="no se han encontrado registros"  />

<CheckBox android:text=""
                android:id="@+id/checkBox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"/>

<CheckBox android:text=""
                android:id="@+id/checkBox2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"/>

<CheckBox android:text=""
                android:id="@+id/checkBox3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"/>
</LinearLayout>

少し「面倒」ですが、これを行う方法がわかりません。

コードは電話から連絡先を取得することですが、リストされているすべての連絡先の横にチェックボックスを配置して、それらを選択し、「招待リスト」などに追加したいと考えています。

どうもありがとうございました!

4

1 に答える 1

0

Androidのリストから複数の連絡先を選択するためのチェックボックス付きのカスタム連絡先リストを作成する方法

public class AddFromContacts extends Activity {
ArrayList<String> listname;
// ArrayList<String> list_no;
Context context;
LayoutInflater inflater;
ListView contactlistView;
String name;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.show);

contactlistView = (ListView) findViewById(R.id.ContactlistView);

listname = new ArrayList<String>();
// list_no = new ArrayList<String>();

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
        null, null, null);
if (cur.getCount() > 0) {
    while (cur.moveToNext()) {
        String id = cur.getString(cur
                .getColumnIndex(ContactsContract.Contacts._ID));

        String name = cur
                .getString(cur
                                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        if (Integer
                .parseInt(cur.getString(cur
                        .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

            Cursor pCur = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                            + " = ?", new String[] { id }, null);
            while (pCur.moveToNext()) {
                // Do something with phones
                String phoneNo = pCur
                        .getString(pCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                listname.add(name + "\n" + phoneNo);

                // list_no.add(phoneNo);

            }
            pCur.close();
        }
    }

}
contactlistView.setAdapter(new Contact(this));
}

class Contact extends BaseAdapter {
Context myContext;

public Contact(AddFromContacts contactActivity) {
    // TODO Auto-generated constructor stub
    this.myContext = contactActivity;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return listname.size();
}

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return arg0;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return arg0;
}

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

        inflater = (LayoutInflater) myContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = inflater.inflate(R.layout.checkbox, null);
        final ViewHolder viewHolder = new ViewHolder();
        viewHolder.text_name = (TextView) convertView
                .findViewById(R.id.name);
        viewHolder.id = (TextView) convertView.findViewById(R.id.id);
        viewHolder.checkBox = (CheckBox) convertView
                .findViewById(R.id.checkBox);

        convertView.setTag(viewHolder);
    }

    final ViewHolder holder = (ViewHolder) convertView.getTag();
    // holder.text_name.setText(list_no.get(position));
    holder.id.setText(listname.get(position));

    if (holder != null) {
        holder.checkBox
                .setOnCheckedChangeListener(new OnCheckedChangeListener() {

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

                        // Toast.makeText(myContext, name + "     Selected",
                        // Toast.LENGTH_LONG).show();
                    }
                });
    }
    return convertView;
}
}

class ViewHolder {
TextView text_name, id;
CheckBox checkBox;
    // EditText search;
}
}

しかし、リストから連絡先を選択するときに、私が選択していない連絡先をリストから選択するときに、これで問題に直面しています

于 2013-09-04T04:39:04.323 に答える