不能点击多列自定义ListView的项目,在使用我在ListView内编辑文本? [英] Can't click on multi column Custom listView items, when i using edit text inside the listView?

查看:200
本文介绍了不能点击多列自定义ListView的项目,在使用我在ListView内编辑文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样数量,物品,price.if在自定义列表三栏自定义的ListView现在用的TextView三列,它的点击是正确worked.But,如果我用两个TextView的一EDITTEXT,那么我不能能够点击该item.i只能编辑EDITTEXT field.but不能点击。

 公共类TicketActivity延伸活动{
TextView的T1;
TextView的T2;
ListView的L1;
TextView的T6;
    公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.ticket);
T1 =(的TextView)findViewById(R.id.textView3);
T2 =(的TextView)findViewById(R.id.textView5);
L1 =(ListView控件)findViewById(R.id.listView1);   //获取表没有价值从编辑文本
意图的i1 = getIntent();
束B = i1.getExtras();
INT NUM = b.getInt(表编号:);
    字符串PNO = Integer.toString(NUM);
    t1.setText(PNO);        //获取客户的价值从编辑文本    意向I2 = getIntent();
    束B1 = i2.getExtras();
    INT NUM1 = b1.getInt(客人:);
    字符串PNO1 = Integer.toString(NUM1);
    t2.setText(PNO1);
     //列表<串GT; ST = GlobalClass.myval;       // ArrayAdapter<串GT; ADA =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_list_item_1,ST);       l1.setAdapter(新EfficientAdapter(TicketActivity.this));
     l1.setOnItemClickListener(新OnItemClickListener(){
   公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
       的String [] S1 =(字符串[])parent.getItemAtPosition(位置);       Toast.makeText(getApplicationContext(),选择:+ S1,Toast.LENGTH_SHORT).show();
   }
       });
      }
   私有静态类EfficientAdapter延伸BaseAdapter {
    私人LayoutInflater mInflater;    公共EfficientAdapter(上下文的背景下){
        mInflater = LayoutInflater.from(上下文);    //执行EfficientAdapter的
    }
    公众诠释的getCount(){        返回GlobalClass.myval.size();//<GlobalClass.myvals.size()?GlobalClass.myval.size():GlobalClass.myvals.size();    }
    公共对象的getItem(INT位置){        返回的位置;
    }
    众长getItemId(INT位置){        返回的位置;
    }
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        ViewHolder持有人;
        的String [] = stockArr新的String [GlobalClass.myval.size()];
        stockArr = GlobalClass.myval.toArray(stockArr);
        的String [] = stockArr1新的String [GlobalClass.myvals.size()];
        stockArr1 = GlobalClass.myvals.toArray(stockArr1);
    如果(convertView == NULL){
            convertView = mInflater.inflate(R.layout.list_ticket,NULL);
            持有人=新ViewHolder();
            holder.Text1 =(EditText上)convertView.findViewById(R.id.editText1);
            holder.Text2 =(TextView中)convertView.findViewById(R.id.textView2);
            holder.Text3 =(TextView中)convertView.findViewById(R.id.textView3);
            convertView.setTag(保持器);
        }
        其他{
              支架=(ViewHolder)convertView.getTag();
            }
           holder.Text1.setText(1);
            holder.Text2.setText(stockArr [位置]);
            holder.Text3.setText(stockArr1 [位置]);
            返回convertView;     }    }
    静态类ViewHolder {
        文本1的EditText;
        TextView的文本2;
        TextView的文本3;    }      }


解决方案

在你的onCreate()试试这个:

  l1.setItemsCanFocus(真);

注意这一定行之后完成

  L1 =(ListView控件)findViewById(R.id.listView1);

,否则你会得到一个NullPointerException异常。

现在,你已经告诉你的ListView让你的项目集中,你要侦听的在您的孩子的使用

  //在你的ListView项目
setOnFocusChangeListener(新OnFocusChangeListener(){
    @覆盖
    公共无效onFocusChange(视图V,布尔hasFocus){
        // TODO:处理焦点位置    }
});

I have three column custom listView like Qty,items,price.if In the custom list am using textView for three columns ,its clickable is properly worked.But if i using two textView and one editText,then i cant able to click the item.i can edit only the editText field.but could not Clickable.

   public class TicketActivity extends Activity{
TextView t1;
TextView t2;
ListView l1;
TextView t6;
    public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket);
t1=(TextView)findViewById(R.id.textView3);
t2=(TextView)findViewById(R.id.textView5);
l1=(ListView)findViewById(R.id.listView1);

   //Get the Table no Value From Edit Text


Intent i1=getIntent();
Bundle b=i1.getExtras();
int num=b.getInt("Table No:");
    String pno=Integer.toString(num);
    t1.setText(pno);

        //Get The Guest Value From Edit Text

    Intent i2=getIntent();
    Bundle b1=i2.getExtras();
    int num1=b1.getInt("Guest:");
    String pno1=Integer.toString(num1);
    t2.setText(pno1);


     // List<String> st=GlobalClass.myval;

       //ArrayAdapter<String> ada = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1,st);

       l1.setAdapter(new EfficientAdapter(TicketActivity.this));
     l1.setOnItemClickListener(new OnItemClickListener(){
   public void onItemClick(AdapterView<?> parent,View view,int position,long id){


       String[] s1 = (String[]) parent.getItemAtPosition(position);



       Toast.makeText(getApplicationContext(), "Selected:"+ s1,Toast.LENGTH_SHORT).show();
   }
       });
      } 
   private static class EfficientAdapter extends BaseAdapter{
    private LayoutInflater mInflater;



    public EfficientAdapter(Context context){
        mInflater=LayoutInflater.from(context);

    // implementation of EfficientAdapter   
    }
    public int getCount() {

        return GlobalClass.myval.size();//<GlobalClass.myvals.size()?GlobalClass.myval.size():GlobalClass.myvals.size();

    }
    public Object getItem(int position) {

        return position;
    }
    public long getItemId(int position) {

        return position ;
    }
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        String[] stockArr = new String[GlobalClass.myval.size()];
        stockArr = GlobalClass.myval.toArray(stockArr);
        String[] stockArr1=new String[GlobalClass.myvals.size()];
        stockArr1=GlobalClass.myvals.toArray(stockArr1);
    if(convertView==null){
            convertView=mInflater.inflate(R.layout.list_ticket, null);
            holder=new ViewHolder();
            holder.Text1=(EditText) convertView.findViewById(R.id.editText1);
            holder.Text2=(TextView) convertView.findViewById(R.id.textView2);
            holder.Text3=(TextView) convertView.findViewById(R.id.textView3);
            convertView.setTag(holder);
        }
        else{
              holder=(ViewHolder)convertView.getTag();
            }
           holder.Text1.setText("1");
            holder.Text2.setText(stockArr[position]);
            holder.Text3.setText(stockArr1[position]);
            return convertView;

     }

    }
    static class ViewHolder{
        EditText Text1;
        TextView Text2;
        TextView Text3;

    }

      }

解决方案

Try this in your onCreate():

l1.setItemsCanFocus(true);

Note that this must be done after the line

l1=(ListView)findViewById(R.id.listView1);

or else you'll get a NullPointerException.

Now that you've told your ListView "let your items focus," you have to listen for that in your children using

// In items of your ListView
setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        // TODO: handle focus here

    }
});

这篇关于不能点击多列自定义ListView的项目,在使用我在ListView内编辑文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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