如何存取权限变量从onItemClick arrayadapter getView [英] How to acces variable in arrayadapter getView from onItemClick
问题描述
我有一个ArrayAdapter的getView设置与数据列表视图中的项目。当我在ListView单击某一行,我想开始另一个活动,(我可以做),但一些数据的发送活动present的另一种观点。
我如何可以从getView访问的数据存储在onItemClick方法?
@覆盖
公共查看getView(INT位置,查看convertView,父母的ViewGroup){
LayoutInflater吹气=(LayoutInflater)上下文
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看rowView = inflater.inflate(R.layout.rotarowlayout,父母,
假); TextView的STARTTIME =(TextView中)rowView
.findViewById(R.id.rowstarttime);
TextView的持续时间=(TextView中)rowView
.findViewById(R.id.rowduration);
TextView的状态=(TextView中)rowView.findViewById(R.id.rowstatus);
TextView的名字=(TextView中)rowView.findViewById(R.id.rowclientname);
TextView的actualTimeIn =(TextView中)rowView.findViewById(R.id.rowactualtimein);
TextView的actualTimeOut =(TextView中)rowView.findViewById(R.id.rowactualtimeout); 字符串纪录= list.get(位置)的ToString();
串[] itemsInRecord = record.split(,);
Log.e(TAGitemin纪录=+ itemsInRecord.length);
的String [] = recordItem新的String [itemsInRecord.length] 为(中间体X = 0; X&下; itemsInRecord.length; X ++){ recordItem [X] = itemsInRecord [X]; } //设置日期列表视图上方 textViewDate.setText(罗塔为+ recordItem [0] .substring(1,11));
串withoutBraket = recordItem [0] .substring(11);
串withoutSecs = withoutBraket.substring(0,6); Log.e(TAGrecordItem =+ recordItem [2]); 串_statusString = recordItem [2]的ToString()修剪(); 如果(_statusString.equalsIgnoreCase(已完成)){ statusField =C; }否则如果(_statusString.equalsIgnoreCase(NCR)){ statusField =NCR; }否则如果(_statusString.equalsIgnoreCase(等待)){ statusField =W;
} Log.e(TAGstatusField =+ statusField); startTime.setText(withoutSecs +);
duration.setText(recordItem [1] +分钟);
status.setText(statusField);
name.setText(+ recordItem [3] + recordItem [4]);
CALLID = recordItem [5];
// needName = recordItem [6];
actualTimeIn.setText(这个称呼是在完成了+ recordItem [6] + - ); 如果(!recordItem [7]的ToString()。修剪()。equalsIgnoreCase(])){
串stripBracket = recordItem [7]的ToString()修剪();
Log.e(TAGstripBracket =+ stripBracket);
字符串stripBracket2 = stripBracket.substring(0,5);
Log.e(TAG,SB后分裂=+ stripBracket2);
actualTimeOut.setText(stripBracket2);
} 返回rowView; }
@覆盖
公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
长ID){ Log.e(TAG,里面onItemClick);
意图I =新意图(GetRota.this,someOtherActivity.class);
i.putsomedata;
startActivity(ⅰ); }
使用 setTag()
和 getTag()
方法,你可以在 onItemClick从适配器的数据()
。像这样
在适配器类
@覆盖
公共查看getView(INT位置,查看convertView,父母的ViewGroup){ rowView.setTag(yourdata_object);
返回rowView;
}
在项目上点击
@覆盖
公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){ YourDataObject项目=(YourDataObject)view.getTag();
意图I =新意图(GetRota.this,someOtherActivity.class);
i.putsomedata;
startActivity(ⅰ);
}
I have an ArrayAdapter whose getView sets the items in the listview with data. When i click a row in the listview i'd like to start another activity, (which i can do), but send that activity some of the data to present in another view.
How can i make the data from getView accessible in the onItemClick method?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rotarowlayout, parent,
false);
TextView startTime = (TextView) rowView
.findViewById(R.id.rowstarttime);
TextView duration = (TextView) rowView
.findViewById(R.id.rowduration);
TextView status = (TextView) rowView.findViewById(R.id.rowstatus);
TextView name = (TextView) rowView.findViewById(R.id.rowclientname);
TextView actualTimeIn = (TextView) rowView.findViewById(R.id.rowactualtimein);
TextView actualTimeOut = (TextView) rowView.findViewById(R.id.rowactualtimeout);
String record = list.get(position).toString();
String[] itemsInRecord = record.split(",");
Log.e(TAG, "itemin record = " + itemsInRecord.length);
String[] recordItem = new String[itemsInRecord.length];
for (int x = 0; x < itemsInRecord.length; x++) {
recordItem[x] = itemsInRecord[x];
}
//set date above listview
textViewDate.setText("Rota For " + recordItem[0].substring(1, 11));
String withoutBraket = recordItem[0].substring(11);
String withoutSecs = withoutBraket.substring(0, 6);
Log.e(TAG, "recordItem = " + recordItem[2]);
String _statusString = recordItem[2].toString().trim();
if(_statusString.equalsIgnoreCase("Completed")){
statusField = "c";
}else if(_statusString.equalsIgnoreCase("NCR")){
statusField = "NCR";
}else if(_statusString.equalsIgnoreCase("Waiting")){
statusField = "W";
}
Log.e(TAG, "statusField = " + statusField);
startTime.setText(withoutSecs+" " );
duration.setText( recordItem[1]+" mins ");
status.setText( statusField);
name.setText( " " + recordItem[3] + recordItem[4]);
callID = recordItem[5];
// needName = recordItem[6];
actualTimeIn.setText("This call was completed at " + recordItem[6] + " - ");
if( ! recordItem[7].toString().trim().equalsIgnoreCase( "]")){
String stripBracket = recordItem[7].toString().trim();
Log.e(TAG, "stripBracket = " + stripBracket);
String stripBracket2 = stripBracket.substring(0,5);
Log.e(TAG, "SB after split = " + stripBracket2 );
actualTimeOut.setText(stripBracket2);
}
return rowView;
}
.
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Log.e(TAG, "inside onItemClick");
Intent i = new Intent(GetRota.this, someOtherActivity.class);
i.putsomedata;
startActivity(i);
}
By Using setTag()
and getTag()
methods you can get data from the adapter in onItemClick()
. like this
in adapter class
@Override
public View getView(int position, View convertView, ViewGroup parent) {
rowView.setTag(yourdata_object);
return rowView;
}
in on item click
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
YourDataObject item = (YourDataObject ) view.getTag();
Intent i = new Intent(GetRota.this, someOtherActivity.class);
i.putsomedata;
startActivity(i);
}
这篇关于如何存取权限变量从onItemClick arrayadapter getView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!