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