2015-06-04 40 views
-1

ListView这里我有我的所有联系人复选框。当我从列表中选择2个联系人并点击一个按钮时,所选列表的值应该显示在下一个活动中。我怎样才能做到这一点?显示所选数据的列表视图到textView中的下一个活动

它我Activity类

public class ContactListActivity extends Activity implements OnItemClickListener { 

private ListView listView; 
private List<ContactBean> list = new ArrayList<ContactBean>(); 

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

    listView = (ListView) findViewById(R.id.list); 
    listView.setOnItemClickListener(this); 

    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); 
    while (phones.moveToNext()) { 

     String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     ContactBean objContact = new ContactBean(); 
     objContact.setName(name); 
     objContact.setPhoneNo(phoneNumber); 
     list.add(objContact); 
    } 
    phones.close(); 



    ContanctAdapter objAdapter = new ContanctAdapter(ContactListActivity.this, R.layout.alluser_row, list); 
    listView.setAdapter(objAdapter); 

    if (null != list && list.size() != 0) { 
     Collections.sort(list, new Comparator<ContactBean>() { 

      @Override 
      public int compare(ContactBean lhs, ContactBean rhs) { 
       return lhs.getName().compareTo(rhs.getName()); 
      } 
     }); 
     AlertDialog alert = new AlertDialog.Builder(ContactListActivity.this).create(); 
     alert.setTitle(""); 

     alert.setMessage(list.size() + " Contact Found!!!"); 

     alert.setButton("OK", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 
     alert.show(); 

    } else { 
     showToast("No Contact Found!!!"); 
    } 
} 

private void showToast(String msg) { 
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onItemClick(AdapterView<?> listview, View v, int position, long id) { 
    ContactBean bean = (ContactBean) listview.getItemAtPosition(position); 
    showCallDialog(bean.getName(), bean.getPhoneNo()); 
} 

private void showCallDialog(String name, final String phoneNo) { 
    AlertDialog alert = new AlertDialog.Builder(ContactListActivity.this).create(); 
    alert.setTitle("Call?"); 

    alert.setMessage("Are you sure want to call " + name + " ?"); 

    alert.setButton("No", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 
    alert.setButton2("Yes", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      String phoneNumber = "tel:" + phoneNo; 
      Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(phoneNumber)); 
      startActivity(intent); 
     } 
    }); 
    alert.show(); 
} 

而且我适配器类来保存数据是

public class ContanctAdapter extends ArrayAdapter<ContactBean> { 

private Activity activity; 
private List<ContactBean> items; 
private int row; 

private LayoutInflater inflater = null; 

public ContanctAdapter(Activity act, int row, List<ContactBean> items) { 
    super(act, row, items); 
    this.activity = act; 
    this.row = row; 
    this.items = items; 
    this.inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     holder = new ViewHolder(); 
     convertView = inflater.inflate(row, null); 
     holder.tvname = (TextView) convertView.findViewById(R.id.tvname); 
     holder.tvPhoneNo = (TextView) convertView.findViewById(R.id.tvphone); 
     holder.checkbox = (ImageView) convertView.findViewById(R.id.img_checkbox); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    if ((items == null) || ((position + 1) > items.size())) 
     return convertView; 

    ContactBean objBean = items.get(position); 

    holder.checkbox.setSelected((objBean.getIsSelected() == 1) ? true : false); 

    if (holder.tvname != null && null != objBean.getName() && objBean.getName().trim().length() > 0) { 
     holder.tvname.setText(Html.fromHtml(objBean.getName())); 
    } 
    if (holder.tvPhoneNo != null && null != objBean.getPhoneNo() && objBean.getPhoneNo().trim().length() > 0) { 
     holder.tvPhoneNo.setText(Html.fromHtml(objBean.getPhoneNo())); 
    } 

    holder.checkbox.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      items.get(position).isSelected = (v.isSelected()) ? 0 : 1; 
      notifyDataSetChanged(); 

     } 
    }); 

    return convertView; 
} 

public class ViewHolder { 
    public TextView tvname, tvPhoneNo; 
    private ImageView checkbox; 
} 
} 

回答

2

有多种方式来实现这一目标:

方法1 :

使用静态类setter和getter方法:

创建静态类,并设置从第一活性值和第二活动获得价值

方法2:

后通过的意图

你的价值观

方法3:

使用数据库以从一个活动存储数据和从其它活动中获取数据

方法4:

使用共享偏好

示例:使用意图like this

邮政值后值Shared preference

Shared preference

+0

任何示例先生或任何链接? thnxx提前,,我需要它不好 –

0

另一个教程试试这个,它可以帮助你

在onitemClicklistener列表视图页添加该代码

@Override 
public void onItemClick(AdapterView<?> arg0, View view, int position, 
      long id) { 


String TVNameitem = ((TextView) view.findViewById(R.id.tvname)).getText().toString(); 

String TVPhoneitem = ((TextView) view.findViewById(R.id.tvphone)).getText().toString(); 

Intent intent1 = new Intent(this,NextActivity.class); 
intent1.putExtra("STRING_I_NEED_From_TVNAME", TVNameitem); 
intent1.putExtra("STRING_I_NEED_From_TVPHONE",TVPhoneitem); 
    startActivity(intent1); 

} 

在Nextactivty OnCreate中添加该代码获取值,然后在TextView的显示

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

    Bundle extras = getIntent().getExtras(); 
     String VALUE_1= extras.getString("STRING_I_NEED_From_TVNAME"); 
     String Value_2 =extras.getString("STRING_I_NEED_From_TVPHONE"); 

     TextView Textview1=(TextView)findViewById(R.id.CompanyText); 

    Textview1.setText(VALUE_1+":"+Value_2); 

} 
+0

嗨马诺thnxx快速响应,但在我的列表中我使用复选框作为选择器,只有选定的List的值我必须显示在另一个活动。 –

+0

在你的复选框被选中获取你的字符串值,然后转移到下一个活动 – Mano

+0

我应该使用序列化还是寓言概念? –

0

创建getter和setter来共享联系人详细信息。

public class GetContacts { 
    private String contactNumber; 
    private String contactName; 

    GetContacts(){}// constructor without parameter. 

    public String getContactNumber() { 
     return contactNumber; 
    } 

    public void setContactNumber(String contactNumber) { 
     this.contactNumber = contactNumber; 
    } 

    public String getContactName() { 
     return contactName; 
    } 

    public void setContactName(String contactName) { 
     this.contactName = contactName; 
    } 
} 

现在设置的接触值的制定者在GetContact类

在你的第一个活动创建GetContact类的一个实例。

GetContact getContact= new GetContact(); 

并设置参数。

getContact.setContactNumber(phoneNumber); 
getContact.setContactName(name); 

现在是时候让这些值进入第二个活动了。 在你的第二个Activity中创建一个GetContact类的实例,就像你之前做的那样。

并获取参数,并显示到TextView中。

textView1.setText(getContact.getContactNumber(phoneNumber)); 
textView2.setText(getContact.getContactName(name)); 
相关问题