Android 如何从arrayAdapter';什么是viewOnclick?

Android 如何从arrayAdapter';什么是viewOnclick?,android,view,arraylist,adapter,Android,View,Arraylist,Adapter,我有一个应用程序,它有一个客户端数据列表视图。listView中的每一行都将保存名称、地址、电话号码等。我从网络电话中获取数据,然后用支持适配器的数据填充ArrayList 当用户单击列表中的一行时,在适配器的一次单击中,我会得到电话号码,并启动启动拨号程序活动的意图。这一切都很好 客户端的telno总是来自webcall,但在视图中,我有逻辑来决定它是否显示。一些公司不希望显示客户编号,而另一些公司则希望显示客户编号 如何确定运行时视图中是否显示了保存数字的TextView?我设置了一个标记,

我有一个应用程序,它有一个客户端数据列表视图。listView中的每一行都将保存名称、地址、电话号码等。我从网络电话中获取数据,然后用支持适配器的数据填充ArrayList

当用户单击列表中的一行时,在适配器的一次单击中,我会得到电话号码,并启动启动拨号程序活动的意图。这一切都很好

客户端的telno总是来自webcall,但在视图中,我有逻辑来决定它是否显示。一些公司不希望显示客户编号,而另一些公司则希望显示客户编号

如何确定运行时视图中是否显示了保存数字的TextView?我设置了一个标记,并将其传递给onclick,该onclick在listView中具有已单击的行,但如何使用类似的内容

if(Textview.isShown)
在onClick里面?我最终想要的是,如果显示包含该号码的textview,则用户可以单击以打开拨号器,否则拨号器将不会拨打该号码(即使该号码出现在列表中,只是不显示)

事先谢谢你,马特。

私有类mysimplearlayadapter扩展了ArrayAdapter{
私人最终语境;
私人最终阵列列表;
公共MySimpleArrayAdapter(上下文上下文,数组列表){
super(context,R.layout.getrotadetailsrow);
Log.e(标记“内部适配器构造函数”);
this.context=上下文;
this.list=列表;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.getrotadetailsrow,父级,
假);
String record=list.get(position.toString();
字符串[]recordArray=record.split(“,”);
//recordArray[6]=****电话号码****
rowView.setTag(记录);
TextView telNo=(TextView)行视图
.findviewbyd(R.id.telNo);
如果(某些条件){
telNo.setText(“telNo:+recordArray[6]);
}否则{
telNo.setVisibility(View.GONE);
}
返回行视图;
}
@凌驾
public int getCount(){
返回此.list.size();
}
}//适配器端部
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
String record=(String)view.getTag();
字符串[]itemsInRecord=record.split(“,”);
字符串telNo=itemsInRecord[6];
String numberToDial=“电话:”+telNo;
startActivity(新意图(Intent.ACTION_-DIAL,Uri.parse(numberToDial));
}

[第1版]

public class GetRotaDetails extends NfcBaseActivity implements OnItemClickListener{



    ArrayList<ArrayList<String>> array;

    private static final String TAG = GetRotaDetails.class.getSimpleName();
    NfcScannerApplication nfcscannerapplication;
    String callID;
    ListView listView;
    Intent intent;
    MySimpleArrayAdapter arrayAdapter;
    SharedPreferences  appSharedPrefs;
    Handler handler;
    Runnable runnable;
    String rotaAutoLogout;
    int rotaAutoLogoutAsInt;
    String postcodeToPassToDirections;
    String postcodeWithoutSpaces;
    public static final String CUSTOM_QRCODE_ACTION = "com.carefreegroup.QRCODE_ACTION";
    String carerID;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ///////////set titlebar to carer's name///////////////////////
        //////////////////////////////////////////////////////////////
        nfcscannerapplication = (NfcScannerApplication) getApplication();
        intent = this.getIntent();

        setContentView(R.layout.getrotadetailslayout);
        array = new  ArrayList<ArrayList<String>>();
        listView = (ListView) findViewById(R.id.getrotadetailslistview);






    }// end of onCreate











    private class AsyncGetRotaDetails extends AsyncTask<String, Void, String> {

        ProgressDialog progressDialog;
        String rotaDetails = null;



        @Override
        protected String doInBackground(String... params) { 

            try {
                Log.e(TAG, "inside doInBackground");

                rotaDetails = nfcscannerapplication.loginWebservice.getRotaDetail(params[0]);

            } catch (Exception e) {

                e.printStackTrace();

            }
            return rotaDetails;

        }

        @Override
        protected void onPostExecute(String xmlResult) {
            super.onPostExecute(xmlResult);
            if (progressDialog != null)
                progressDialog.dismiss();

                RetrieveExtraDetails red = new RetrieveExtraDetails();
                array = red.getExtraDetails(xmlResult);
                Log.e(TAG, "array from WS = " + array.size());

                if (arrayAdapter == null){
                    MySimpleArrayAdapter arrayAdapter = new MySimpleArrayAdapter(GetRotaDetails.this, array);
                    listView.setAdapter(arrayAdapter);
                    listView.setOnItemClickListener(GetRotaDetails.this);
                 }//end if

        }// end of postExecute

    }//end of Async




    private class MySimpleArrayAdapter extends ArrayAdapter<String> {




        private final Context context;
        private final ArrayList<?> list;



        public MySimpleArrayAdapter(Context context, ArrayList<?> list) {

            super(context, R.layout.getrotadetailsrow);
            Log.e(TAG, "inside adapter constructor");
            this.context = context;
            this.list = list;


        }

        @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.getrotadetailsrow, parent,
                    false);
            String record = list.get(position).toString();
            String[] recordArray = record.split(",");
            rowView.setTag(record);



             TextView telNo = (TextView) rowView
                        .findViewById(R.id.telno);





            if(  someCondition ){  


                telNo.setVisibility(View.GONE);



            }else {
                telNo.setVisibility(View.VISIBLE);
                telNo.setText("TelNo: " + recordArray[6]);
            }

                }

            }

            return rowView;
        }

        @Override
        public int getCount() {
            return this.list.size();
        }

}//end of adapter




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


        String record = (String)view.getTag();

        String[] itemsInRecord = record.split(",");

        String telNo = itemsInRecord[6];




            String numberToDial = "tel:" + telNo;
            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));


    }





    }// end of class
公共类GetRotaDetails扩展了NfcBaseActivity实现了McClickListener{
数组列表数组;
私有静态最终字符串标记=GetRotaDetails.class.getSimpleName();
NfcScannerApplication NfcScannerApplication;
线状callID;
列表视图列表视图;
意图;
MySimpleArrayaAdapter ArrayaAdapter;
SharedReferences AppSharedRefers;
处理者;
可运行的可运行的;
字符串自动注销;
国际扶轮社;
字符串postcodeToPassToDirections;
不带空格的字符串邮政编码;
公共静态最终字符串CUSTOM\u QRCODE\u ACTION=“com.carefreegroup.QRCODE\u ACTION”;
细绳苔草;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
///////////将标题栏设置为护理者的姓名///////////////////////
//////////////////////////////////////////////////////////////
nfcscannerapplication=(nfcscannerapplication)getApplication();
intent=this.getIntent();
setContentView(R.layout.getrotadetailslayout);
数组=新的ArrayList();
listView=(listView)findViewById(R.id.getrotadetailslistview);
}//onCreate结束
私有类AsyncGetRotaDetails扩展AsyncTask{
进行对话进行对话;
字符串rotaDetails=null;
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
Log.e(标签“内部doInBackground”);
rotaDetails=nfcscannerapplication.loginWebservice.getrotadetails(参数[0]);
}捕获(例外e){
e、 printStackTrace();
}
返回旋转尾翼;
}
@凌驾
受保护的void onPostExecute(字符串xmlResult){
super.onPostExecute(xmlResult);
如果(progressDialog!=null)
progressDialog.disclose();
RetrieveExtraDetails红色=新的RetrieveExtraDetails();
array=red.getExtraDetails(xmlResult);
Log.e(标记,“array from WS=“+array.size());
if(arrayAdapter==null){
mysimplearlayadapter arrayAdapter=新的mysimplearlayadapter(GetRotaDetails.this,array);
setAdapter(arrayAdapter);
setOnItemClickListener(GetRotaDetails.this);
}//如果结束
}//postExecute结束
}//异步结束
私有类MySimpleArrayAdapter扩展了ArrayAdapter{
私人最终语境;
私人最终阵列列表;
公共MySimpleArrayAdapter(上下文上下文,数组列表){
super(context,R.layout.getrotadetailsrow);
Log.e(标记“内部适配器构造函数”);
this.context=上下文;
this.list=列表;
}
@凌驾
公众视野
public class GetRotaDetails extends NfcBaseActivity implements OnItemClickListener{



    ArrayList<ArrayList<String>> array;

    private static final String TAG = GetRotaDetails.class.getSimpleName();
    NfcScannerApplication nfcscannerapplication;
    String callID;
    ListView listView;
    Intent intent;
    MySimpleArrayAdapter arrayAdapter;
    SharedPreferences  appSharedPrefs;
    Handler handler;
    Runnable runnable;
    String rotaAutoLogout;
    int rotaAutoLogoutAsInt;
    String postcodeToPassToDirections;
    String postcodeWithoutSpaces;
    public static final String CUSTOM_QRCODE_ACTION = "com.carefreegroup.QRCODE_ACTION";
    String carerID;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ///////////set titlebar to carer's name///////////////////////
        //////////////////////////////////////////////////////////////
        nfcscannerapplication = (NfcScannerApplication) getApplication();
        intent = this.getIntent();

        setContentView(R.layout.getrotadetailslayout);
        array = new  ArrayList<ArrayList<String>>();
        listView = (ListView) findViewById(R.id.getrotadetailslistview);






    }// end of onCreate











    private class AsyncGetRotaDetails extends AsyncTask<String, Void, String> {

        ProgressDialog progressDialog;
        String rotaDetails = null;



        @Override
        protected String doInBackground(String... params) { 

            try {
                Log.e(TAG, "inside doInBackground");

                rotaDetails = nfcscannerapplication.loginWebservice.getRotaDetail(params[0]);

            } catch (Exception e) {

                e.printStackTrace();

            }
            return rotaDetails;

        }

        @Override
        protected void onPostExecute(String xmlResult) {
            super.onPostExecute(xmlResult);
            if (progressDialog != null)
                progressDialog.dismiss();

                RetrieveExtraDetails red = new RetrieveExtraDetails();
                array = red.getExtraDetails(xmlResult);
                Log.e(TAG, "array from WS = " + array.size());

                if (arrayAdapter == null){
                    MySimpleArrayAdapter arrayAdapter = new MySimpleArrayAdapter(GetRotaDetails.this, array);
                    listView.setAdapter(arrayAdapter);
                    listView.setOnItemClickListener(GetRotaDetails.this);
                 }//end if

        }// end of postExecute

    }//end of Async




    private class MySimpleArrayAdapter extends ArrayAdapter<String> {




        private final Context context;
        private final ArrayList<?> list;



        public MySimpleArrayAdapter(Context context, ArrayList<?> list) {

            super(context, R.layout.getrotadetailsrow);
            Log.e(TAG, "inside adapter constructor");
            this.context = context;
            this.list = list;


        }

        @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.getrotadetailsrow, parent,
                    false);
            String record = list.get(position).toString();
            String[] recordArray = record.split(",");
            rowView.setTag(record);



             TextView telNo = (TextView) rowView
                        .findViewById(R.id.telno);





            if(  someCondition ){  


                telNo.setVisibility(View.GONE);



            }else {
                telNo.setVisibility(View.VISIBLE);
                telNo.setText("TelNo: " + recordArray[6]);
            }

                }

            }

            return rowView;
        }

        @Override
        public int getCount() {
            return this.list.size();
        }

}//end of adapter




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


        String record = (String)view.getTag();

        String[] itemsInRecord = record.split(",");

        String telNo = itemsInRecord[6];




            String numberToDial = "tel:" + telNo;
            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));


    }





    }// end of class
 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position, long id)        
             {
             TextView tv = (TextView)view.findViewById(R.textView1);
              if (tv.getVisibility() == View.VISIBLE) {
                   // Its visible
             } else {
            // Either gone or invisible
             }
             }
 });
    TextView tv = (TextView)view.findViewById(R.textView1);