Android 如何从一个活动到另一个活动获取ListView数据
我正在开发一个应用程序,在该应用程序中,我希望通过单击Android 如何从一个活动到另一个活动获取ListView数据,android,Android,我正在开发一个应用程序,在该应用程序中,我希望通过单击ImageView,将ListView中的数据发送到另一个Activity。代码如下所示: package com.gabriel.utility; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import android.content.Context;
ImageView
,将ListView
中的数据发送到另一个Activity
。代码如下所示:
package com.gabriel.utility;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ToggleButton;
import com.gabriel.activity.ContactInfoActivity;
import com.gabriel.activity.ContactListActivity;
import com.gabriel.activity.GabrielApplication;
import com.gabriel.activity.R;
import com.gabriel.database.ContactCore;
import com.gabriel.database.WebMessageCore;
public class WebMessageAdapter extends ArrayAdapter<WebMessageCore>{
Context _Context;
ArrayList<WebMessageCore> _WebMsgList;
WebMessageCore _WebMsgCore;
TextView _MsgContent;
private LayoutInflater mInflater;
ImageButton Arrow;
GabrielApplication application;
public WebMessageAdapter(Context context, int resource,
ArrayList<WebMessageCore> contactList) {
super(context, resource, contactList);
_Context = context;
_WebMsgList = contactList;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return _WebMsgList.size();
}
public WebMessageCore getItem(int position) {
return _WebMsgList.get(position);
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row_view, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.name);
holder.txtmessage = (TextView) convertView
.findViewById(R.id.meassage);
holder.txtPhone = (TextView) convertView.findViewById(R.id.phone);
holder.txtdate= (TextView ) convertView.findViewById(R.id.datetime);
holder.Arrow = (ImageView)convertView.findViewById(R.id.settingArrow);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
_WebMsgCore=_WebMsgList.get(position);
holder.txtName.setText(_WebMsgCore.getName());
holder.txtmessage.setText(_WebMsgCore.getMessage());
holder.txtPhone.setText(_WebMsgCore.getMobileNo());
holder.Arrow.setOnClickListener( new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent newActivity = new Intent(_Context, ContactInfoActivity.class);
_Context.startActivity(newActivity);
}
});
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
holder.txtdate.setText(currentDateTimeString);
return convertView;
/* SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm:ss.SSS a");
Date resultdate = new Date((new Date()).getTime());
String currentDateTimeString = sdf.format(resultdate);
holder.txtdate.setText(currentDateTimeString);*/
}
/*tdate = (TextView)findViewById(R.id.datetime);
Arrow = (ImageButton)findViewById(R.id.settingArrow);
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
tdate.setText(currentDateTimeString);
Arrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent newActivity = new Intent(context, ContactInfoActivity.class);
startActivity(newActivity);
}
});
*/
//View contactView = convertView;
/*if (contactView == null) {
contactView = LayoutInflater.from(_Context).inflate(
R.layout.web_message_item, null);
}
_MsgContent = (TextView) contactView.findViewById(R.id.messageContent);
//To set text as bold
//=====================
_MsgContent.setTypeface(null, Typeface.BOLD);
_WebMsgCore = _WebMsgList.get(position);
_MsgContent.setText(_WebMsgCore.getMessage());
return contactView;
}
*/
static class ViewHolder {
ImageView Arrow;
TextView txtName;
TextView txtmessage;
TextView txtPhone;
TextView txtdate;
}
}`
package com.gabriel.utility;
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Date;
导入android.content.Context;
导入android.content.Intent;
导入android.graphics.Typeface;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageButton;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.ToggleButton;
导入com.gabriel.activity.ContactInfoActivity;
导入com.gabriel.activity.ContactListActivity;
导入com.gabriel.activity.gabriel应用程序;
导入com.gabriel.activity.R;
导入com.gabriel.database.ContactCore;
导入com.gabriel.database.WebMessageCore;
公共类WebMessageAdapter扩展了ArrayAdapter{
语境(Context)语境;;
ArrayList_WebMsgList;
WebMessageCore\u WebMsgCore;
文本视图_MsgContent;
私人停车场;
图像按钮箭头;
加布里埃尔申请;
公共WebMessageAdapter(上下文、int资源、,
ArrayList联系人列表){
超级(上下文、资源、联系人列表);
_上下文=上下文;
_WebMsgList=联系人列表;
mInflater=LayoutInflater.from(上下文);
}
public int getCount(){
返回_WebMsgList.size();
}
public WebMessageCore getItem(int位置){
return_WebMsgList.get(位置);
}
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
convertView=mInflater.充气(R.layout.custom_row_view,null);
holder=新的ViewHolder();
holder.txtName=(TextView)convertView.findViewById(R.id.name);
holder.txtmessage=(TextView)convertView
.findviewbyd(R.id.meassage);
holder.txtPhone=(TextView)convertView.findViewById(R.id.phone);
holder.txtdate=(TextView)convertView.findViewById(R.id.datetime);
holder.Arrow=(ImageView)convertView.findViewById(R.id.settingArrow);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
_WebMsgCore=\u WebMsgList.get(位置);
holder.txtName.setText(_WebMsgCore.getName());
holder.txtmessage.setText(_WebMsgCore.getMessage());
holder.txtPhone.setText(_WebMsgCore.getMobileNo());
holder.Arrow.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Intent newActivity=newintent(_Context,ContactInfoActivity.class);
_背景。开始触觉(新活动);
}
});
字符串currentDateTimeString=DateFormat.getDateTimeInstance().format(新日期());
holder.txtdate.setText(currentDateTimeString);
返回视图;
/*SimpleDataFormat sdf=新的SimpleDataFormat(“mm dd,yyyy HH:mm:ss.SSS a”);
Date resultdate=新日期((新日期()).getTime());
字符串currentDateTimeString=sdf.format(resultdate);
holder.txtdate.setText(currentDateTimeString)*/
}
/*tdate=(TextView)findViewById(R.id.datetime);
箭头=(图像按钮)findViewById(R.id.settingArrow);
字符串currentDateTimeString=DateFormat.getDateTimeInstance().format(新日期());
tdate.setText(currentDateTimeString);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Intent newActivity=newintent(上下文,ContactInfoActivity.class);
星触觉(新活动);
}
});
*/
//查看联系人视图=转换视图;
/*如果(contactView==null){
contactView=LayoutFlater.from(_Context)。充气(
R.layout.web_消息_项,空);
}
_MsgContent=(TextView)contactView.findViewById(R.id.messageContent);
//将文本设置为粗体
//=====================
_MsgContent.setTypeface(null,Typeface.BOLD);
_WebMsgCore=\u WebMsgList.get(位置);
_MsgContent.setText(_WebMsgCore.getMessage());
返回联系人视图;
}
*/
静态类视窗夹{
图像视图箭头;
TextView-txtName;
TextView-txtmessage;
TextView-txtPhone;
TextView-txtdate;
}
}`
然后我想把数据传给另一个活动。请告诉我一些想法。列表是可序列化的,所以您可以通过Intent将它们传递给其他活动。看 确保您的WebMessageCore也实现了可序列化功能。试试这个(lol): 像这样使用它:
package com.gabriel.utility;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ToggleButton;
import com.gabriel.activity.ContactInfoActivity;
import com.gabriel.activity.ContactListActivity;
import com.gabriel.activity.GabrielApplication;
import com.gabriel.activity.R;
import com.gabriel.database.ContactCore;
import com.gabriel.database.WebMessageCore;
public class WebMessageAdapter extends ArrayAdapter<WebMessageCore>{
Context _Context;
ArrayList<WebMessageCore> _WebMsgList;
WebMessageCore _WebMsgCore;
TextView _MsgContent;
private LayoutInflater mInflater;
ImageButton Arrow;
GabrielApplication application;
public WebMessageAdapter(Context context, int resource,
ArrayList<WebMessageCore> contactList) {
super(context, resource, contactList);
_Context = context;
_WebMsgList = contactList;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return _WebMsgList.size();
}
public WebMessageCore getItem(int position) {
return _WebMsgList.get(position);
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row_view, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.name);
holder.txtmessage = (TextView) convertView
.findViewById(R.id.meassage);
holder.txtPhone = (TextView) convertView.findViewById(R.id.phone);
holder.txtdate= (TextView ) convertView.findViewById(R.id.datetime);
holder.Arrow = (ImageView)convertView.findViewById(R.id.settingArrow);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
_WebMsgCore=_WebMsgList.get(position);
holder.txtName.setText(_WebMsgCore.getName());
holder.txtmessage.setText(_WebMsgCore.getMessage());
holder.txtPhone.setText(_WebMsgCore.getMobileNo());
holder.Arrow.setOnClickListener( new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent newActivity = new Intent(_Context, ContactInfoActivity.class);
_Context.startActivity(newActivity);
}
});
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
holder.txtdate.setText(currentDateTimeString);
return convertView;
/* SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm:ss.SSS a");
Date resultdate = new Date((new Date()).getTime());
String currentDateTimeString = sdf.format(resultdate);
holder.txtdate.setText(currentDateTimeString);*/
}
/*tdate = (TextView)findViewById(R.id.datetime);
Arrow = (ImageButton)findViewById(R.id.settingArrow);
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
tdate.setText(currentDateTimeString);
Arrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent newActivity = new Intent(context, ContactInfoActivity.class);
startActivity(newActivity);
}
});
*/
//View contactView = convertView;
/*if (contactView == null) {
contactView = LayoutInflater.from(_Context).inflate(
R.layout.web_message_item, null);
}
_MsgContent = (TextView) contactView.findViewById(R.id.messageContent);
//To set text as bold
//=====================
_MsgContent.setTypeface(null, Typeface.BOLD);
_WebMsgCore = _WebMsgList.get(position);
_MsgContent.setText(_WebMsgCore.getMessage());
return contactView;
}
*/
static class ViewHolder {
ImageView Arrow;
TextView txtName;
TextView txtmessage;
TextView txtPhone;
TextView txtdate;
}
}`
活动1:MySingletonClass.getInstance().setData(yourData)代码>
活动2:MySingletonClass.getInstance().getData()代码>
如果不起作用:尝试在StackOverFlow.com上搜索(超过100个)重复/替代解决方案在适配器getView()函数代码中为列表视图使用setTag()和getTag()属性。。存储和检索数据
同时检查此答案:在您的第一个活动中,只需设置一个onclick侦听器(在您的列表中)
私有OnItemClickListener myListener=新建OnItemClickListener(){
@重写公共控件单击(AdapterView父对象,视图v,
内部i,长l){
不要伪造
Log.v(TAG, "onItemClick fired!" + i);
ObjectClass mObjectClass = (ObjectClass) >parent.getItemAtPosition(i);
//get what where ever you need from mObjectClass then pass it with putExtra > //if it's a complex object use Parcelable
}
yourList.setOnItemClickListener(myListener);