如何存取权限变量从onItemClick arrayadapter getView [英] How to acces variable in arrayadapter getView from onItemClick

查看:102
本文介绍了如何存取权限变量从onItemClick arrayadapter getView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆