2012-08-07 4 views
2

Qty, items, price.if와 같은 세 개의 열 사용자 정의 listView가 있습니다. 사용자 정의 목록에서 textView를 세 열에 사용하는 경우 clickable이 제대로 작동합니다. 그러나 두 textView와 editText를 사용하면 클릭 할 수 없습니다. item.i는 editText 필드 만 편집 할 수 있지만 클릭 할 수는 없습니다.listView 내에서 편집 텍스트를 사용할 때 다중 열 사용자 지정 listView 항목을 클릭 할 수 없습니까?

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; 

    } 

     } 

답변

0

당신은 당신의 어댑터 또는 아이 뷰 클릭 이벤트를 얻는 경우에 당신이 제어 할 수있는 것입니다

setItemsCanFocus(true) 

이 덤비는 시도 월. Here is the doc

0

당신의에서 onCreate()에서이 시도 :이 라인

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

후 수행해야합니다 그렇지 않으면 당신이 NullPointerException이 얻을거야

l1.setItemsCanFocus(true); 

. 이제 당신은 당신이 사용하여 아이들에 해당 을 수신해야 "항목이, 집중하자"당신의 ListView 말 했어요 것을

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

    } 
}); 
관련 문제