Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未对整个视图调用OnClickListner_Android_Listview_Android Arrayadapter_Onclicklistener - Fatal编程技术网

Android 未对整个视图调用OnClickListner

Android 未对整个视图调用OnClickListner,android,listview,android-arrayadapter,onclicklistener,Android,Listview,Android Arrayadapter,Onclicklistener,在我正在开发的Android应用程序上,我遇到了这种情况 在一个片段中,有一个ListView,其中包含使用自定义ArrayAdapter(名为ArrayAdapter\u ClientInput)的客户列表(存储在Customer\u InputOld类的实例中)。单行包含一个具有两个文本视图和七个几乎相同的文本视图的ViewFlipper 我在适配器中放置了一个ClickListner和一个TouchListner,因此在点击(和触摸)一行时,应用程序会做出一些事情。这是可行的,但这些事件不

在我正在开发的Android应用程序上,我遇到了这种情况

在一个片段中,有一个ListView,其中包含使用自定义ArrayAdapter(名为ArrayAdapter\u ClientInput)的客户列表(存储在Customer\u InputOld类的实例中)。单行包含一个具有两个文本视图和七个几乎相同的文本视图的ViewFlipper

我在适配器中放置了一个ClickListner和一个TouchListner,因此在点击(和触摸)一行时,应用程序会做出一些事情。这是可行的,但这些事件不会在整行上触发

只有大约80%的行是“可点击的”,而最后一个textView不响应listner

说真的,我不知道该发布什么代码,因为我不知道问题出在哪里:我试图在点击视图本身时烤视图。getWidth(),但实际上宽度是1280 px,整个设备的宽度

单行使用此customer_row.xml充气


适配器代码如下所示:

public class ArrayAdapter_ClientiInput extends ArrayAdapter<CustomerInputOld> {

public EventLog.Event ImageTouched;
//public ListView customerListView;
private ArrayList<CustomerInputOld> list;
private Context context;

//this custom adapter receives an ArrayList of RowData objects.
//RowData is my class that represents the data for a single row and could be anything.
public ArrayAdapter_ClientiInput(Context context, int textViewResourceId,     ArrayList<CustomerInputOld> rowDataList) {
    //populate the local list with data.
    super(context, textViewResourceId, rowDataList);
    this.list = new ArrayList<CustomerInputOld>();
    this.list.addAll(rowDataList);
    this.context = context;
}

public View getView(final int position, View convertView, ViewGroup parent) {
    //creating the ViewHolder we defined earlier.
    ViewHolder_CustomerRow holder = new ViewHolder_CustomerRow();

    //creating LayoutInflater for inflating the row layout.
    LayoutInflater inflater = (LayoutInflater)     this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    //inflating the row layout we defined earlier.
    convertView = inflater.inflate(R.layout.customers_row, null);

    //setting the views into the ViewHolder.
    holder.title = (TextView) convertView.findViewById(R.id.ragioneSocialeViewList);
    holder.capital = (TextView) convertView.findViewById(R.id.customerLogo);
    holder.flipper = (ViewFlipper) convertView.findViewById(R.id.capitalViewFlipper);
    //holder.line = (RelativeLayout) convertView.findViewById(R.id.customer_whole_row);

    holder.canale = (TextView) convertView.findViewById(R.id.canaleViewList);
    holder.solleciti = (TextView) convertView.findViewById(R.id.sollecitiViewList);
    holder.email = (TextView) convertView.findViewById(R.id.emailViewList);
    holder.tipo = (TextView) convertView.findViewById(R.id.tipoViewList);
    holder.numero = (TextView) convertView.findViewById(R.id.telefonoViewList);
    holder.ultimoOrdine = (TextView) convertView.findViewById(R.id.ultimoOrdineViewList);

    //define an onClickListener for the CheckBox.
    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           //      Toast.makeText(getContext(),Integer.toString(v.getWidth()),Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(getContext(), CustomerDetail.class);
            intent.putExtra("name", list.get(position).getCompany());
            getContext().startActivity(intent);
        }
    });

    convertView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent e) {
            if (e.getAction() == android.view.MotionEvent.ACTION_DOWN) {
                v.setBackgroundColor(0xFAAA);
            } else if ( e.getAction() == android.view.MotionEvent.ACTION_UP ||
                        e.getAction() == android.view.MotionEvent.ACTION_CANCEL) {
                isSelected(position, v);
            }

            //Ritorno false per permettere anche al OnClickListener di agire..
            return false;
        }
    });


    holder.flipper.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CustomerListFragment.onRowIconClicked(position, (RelativeLayout) v.getParent(), (ViewFlipper) v, context);
        }
    });


    //setting data into the the ViewHolder.
    holder.title.setText(list.get(position).getCompany());

    holder.capital.setText(list.get(position).getCompany().substring(0, 1).toUpperCase());
    holder.capital.setBackgroundColor(list.get(position).getIconColor());

    holder.canale.setText(list.get(position).getChannel());
    holder.solleciti.setText(list.get(position).getReminders());
    if (Integer.parseInt(list.get(position).getReminders()) >= 3)
        holder.solleciti.setTextColor(0xffff0000);
    holder.email.setText(list.get(position).getEmail());

    holder.numero.setText("tel. " + list.get(position).number);
    holder.ultimoOrdine.setText(new SimpleDateFormat("c d MMM ''yy").format(list.get(position).getLastOrderDate()));

    if (list.get(position).getInvoiceCustomer() == null) {
        if (list.get(position).getDeliveryCustomer() == null) {
            holder.tipo.setText("F/S");
        } else {
            holder.tipo.setText("F");
        }
    } else {
        holder.tipo.setText("S");
    }

    //modifiche nel caso in cui sia selezionato
    if ( isSelected(position,convertView) ) {
        holder.flipper.showNext();
    }

    //return the row view.
    return convertView;
}

private boolean isSelected(int position, View v){
    if (position == CustomerListFragment.customerSelected) {
        v.setBackgroundColor(0xFFE6C86F);
        return true;
    } else {
        v.setBackgroundColor(0xFFFFFFFF);
        return false;
    }
}
}
公共类ArrayAdapter\u客户端输入扩展了ArrayAdapter{
公共事件日志;
//公共列表视图customerListView;
私有数组列表;
私人语境;
//此自定义适配器接收RowData对象的ArrayList。
//RowData是我的类,它表示单行的数据,可以是任何数据。
公共ArrayAdapter_ClientInput(上下文上下文,int textViewResourceId,ArrayList rowDataList){
//用数据填充本地列表。
超级(上下文、textViewResourceId、rowDataList);
this.list=new ArrayList();
this.list.addAll(rowDataList);
this.context=上下文;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//创建前面定义的ViewHolder。
ViewHolder_CustomerRow holder=新的ViewHolder_CustomerRow();
//创建LayoutInflater以扩大行布局。
LayoutFlater充气器=(LayoutFlater)this.context.getSystemService(context.LAYOUT\u充气器\u服务);
//扩大我们前面定义的行布局。
convertView=充气机。充气(R.layout.customers\u行,空);
//将视图设置到ViewHolder中。
holder.title=(TextView)convertView.findViewById(R.id.ragionSocialeViewList);
holder.capital=(TextView)convertView.findViewById(R.id.customerLogo);
holder.flipper=(ViewFlipper)convertView.findViewById(R.id.CapitalViewLipper);
//holder.line=(RelativeLayout)convertView.findViewById(R.id.customer\u整行);
holder.canale=(TextView)convertView.findViewById(R.id.canaleViewList);
holder.solleciti=(TextView)convertView.findViewById(R.id.sollecitiViewList);
holder.email=(TextView)convertView.findViewById(R.id.emailViewList);
holder.tipo=(TextView)convertView.findViewById(R.id.tipoViewList);
holder.numero=(TextView)convertView.findViewById(R.id.telefonoViewList);
holder.ultimoOrdine=(TextView)convertView.findViewById(R.id.ultimoOrdineViewList);
//为复选框定义onClickListener。
convertView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//Toast.makeText(getContext(),Integer.toString(v.getWidth()),Toast.LENGTH_SHORT.show();
Intent Intent=新的Intent(getContext(),CustomerDetail.class);
intent.putExtra(“name”,list.get(position.getCompany());
getContext().startActivity(意图);
}
});
convertView.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件e){
if(e.getAction()==android.view.MotionEvent.ACTION\u DOWN){
v、 立根基色(0xFAAA);
}否则如果(e.getAction()==android.view.MotionEvent.ACTION\u UP||
e、 getAction()==android.view.MotionEvent.ACTION\u取消){
当选(职位五);
}
//Ritorno false Permittere anche al-OnClickListener di agire。。
返回false;
}
});
holder.flipper.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
CustomerListFragment.onRowIconClicked(位置,(相对位置)v.getParent(),(ViewFlipper)v,上下文);
}
});
//将数据设置到ViewHolder中。
holder.title.setText(list.get(position.getCompany());
holder.capital.setText(list.get(position.getCompany().substring(0,1.toUpperCase());
holder.capital.setBackgroundColor(list.get(position.getIconColor());
holder.canale.setText(list.get(position.getChannel());
holder.solleciti.setText(list.get(position.getmembers());
if(Integer.parseInt(list.get(position.getememblents())>=3)
holder.solleciti.setTextColor(0xffff0000);
holder.email.setText(list.get(position.getEmail());
holder.numero.setText(“电话”+列表.get(位置).number);
holder.ultimoOrdine.setText(新的SimpleDataFormat(“CDMMM”“yy”).format(list.get(position.getLastOrderDate());
if(list.get(position).getInvoiceCustomer()==null){
if(list.get(position).getDeliveryCustomer()==null){
持有人:tipo.SETEXT(“F/S”);
}否则{
持有人:tipo.SETEXT(“F”);
}
}否则{
持有人:tipo.setText(“S”);
}
//在cui sia selezionato对nel caso进行了修改
if(isSelected(位置、视图)){
holder.flipper.showNext();
}
//返回行视图。
返回视图;
}
选择专用布尔值(整数位置,视图v){
if(position==CustomerListFragment.customerSelected){
v、 立根基色(0xFFE6C86F);
返回true;
}否则{
v、 立根基色(0xFFFFFF);
返回false;
}
}
}
OP提供的解决方案

在最后一个文本视图中,我将,
public class ArrayAdapter_ClientiInput extends ArrayAdapter<CustomerInputOld> {

public EventLog.Event ImageTouched;
//public ListView customerListView;
private ArrayList<CustomerInputOld> list;
private Context context;

//this custom adapter receives an ArrayList of RowData objects.
//RowData is my class that represents the data for a single row and could be anything.
public ArrayAdapter_ClientiInput(Context context, int textViewResourceId,     ArrayList<CustomerInputOld> rowDataList) {
    //populate the local list with data.
    super(context, textViewResourceId, rowDataList);
    this.list = new ArrayList<CustomerInputOld>();
    this.list.addAll(rowDataList);
    this.context = context;
}

public View getView(final int position, View convertView, ViewGroup parent) {
    //creating the ViewHolder we defined earlier.
    ViewHolder_CustomerRow holder = new ViewHolder_CustomerRow();

    //creating LayoutInflater for inflating the row layout.
    LayoutInflater inflater = (LayoutInflater)     this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    //inflating the row layout we defined earlier.
    convertView = inflater.inflate(R.layout.customers_row, null);

    //setting the views into the ViewHolder.
    holder.title = (TextView) convertView.findViewById(R.id.ragioneSocialeViewList);
    holder.capital = (TextView) convertView.findViewById(R.id.customerLogo);
    holder.flipper = (ViewFlipper) convertView.findViewById(R.id.capitalViewFlipper);
    //holder.line = (RelativeLayout) convertView.findViewById(R.id.customer_whole_row);

    holder.canale = (TextView) convertView.findViewById(R.id.canaleViewList);
    holder.solleciti = (TextView) convertView.findViewById(R.id.sollecitiViewList);
    holder.email = (TextView) convertView.findViewById(R.id.emailViewList);
    holder.tipo = (TextView) convertView.findViewById(R.id.tipoViewList);
    holder.numero = (TextView) convertView.findViewById(R.id.telefonoViewList);
    holder.ultimoOrdine = (TextView) convertView.findViewById(R.id.ultimoOrdineViewList);

    //define an onClickListener for the CheckBox.
    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           //      Toast.makeText(getContext(),Integer.toString(v.getWidth()),Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(getContext(), CustomerDetail.class);
            intent.putExtra("name", list.get(position).getCompany());
            getContext().startActivity(intent);
        }
    });

    convertView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent e) {
            if (e.getAction() == android.view.MotionEvent.ACTION_DOWN) {
                v.setBackgroundColor(0xFAAA);
            } else if ( e.getAction() == android.view.MotionEvent.ACTION_UP ||
                        e.getAction() == android.view.MotionEvent.ACTION_CANCEL) {
                isSelected(position, v);
            }

            //Ritorno false per permettere anche al OnClickListener di agire..
            return false;
        }
    });


    holder.flipper.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CustomerListFragment.onRowIconClicked(position, (RelativeLayout) v.getParent(), (ViewFlipper) v, context);
        }
    });


    //setting data into the the ViewHolder.
    holder.title.setText(list.get(position).getCompany());

    holder.capital.setText(list.get(position).getCompany().substring(0, 1).toUpperCase());
    holder.capital.setBackgroundColor(list.get(position).getIconColor());

    holder.canale.setText(list.get(position).getChannel());
    holder.solleciti.setText(list.get(position).getReminders());
    if (Integer.parseInt(list.get(position).getReminders()) >= 3)
        holder.solleciti.setTextColor(0xffff0000);
    holder.email.setText(list.get(position).getEmail());

    holder.numero.setText("tel. " + list.get(position).number);
    holder.ultimoOrdine.setText(new SimpleDateFormat("c d MMM ''yy").format(list.get(position).getLastOrderDate()));

    if (list.get(position).getInvoiceCustomer() == null) {
        if (list.get(position).getDeliveryCustomer() == null) {
            holder.tipo.setText("F/S");
        } else {
            holder.tipo.setText("F");
        }
    } else {
        holder.tipo.setText("S");
    }

    //modifiche nel caso in cui sia selezionato
    if ( isSelected(position,convertView) ) {
        holder.flipper.showNext();
    }

    //return the row view.
    return convertView;
}

private boolean isSelected(int position, View v){
    if (position == CustomerListFragment.customerSelected) {
        v.setBackgroundColor(0xFFE6C86F);
        return true;
    } else {
        v.setBackgroundColor(0xFFFFFFFF);
        return false;
    }
}
}