2012-08-09 57 views
-1

如果我更改EditText字段android:focusable=false,然後clickable是正常工作,但我不能修改EditText值。但是,如果我更改focusable=true,則可點擊不起作用,但我可以更改EditText值。我們的要求是可以修改EditText值並在列表中單擊。我無法點擊自定義listView項,當我在listView中使用edittext?

在此先感謝。

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){ 

    Toast.makeText(getApplicationContext(), "Selected:",Toast.LENGTH_SHORT).show(); 

    } 
    }); 


     // l1.setOnFocusChangeListener(new OnFocusChangeListener() { 
    // public void onFocusChange(View v, boolean hasFocus) { 
    //  int index= (int) ((ListView)v).getSelectedItemId(); Log.i("index",""+index); 

// } 
//}); 
    } 
     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; 

    } 

    } 

list_ticket.xml:

 <?xml version="1.0" encoding="UTF-8"?> 
     <LinearLayout 
    android:orientation="horizontal" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <EditText 
    android:id="@+id/editText1" 
    android:layout_width="40dp" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="10" 
    android:focusable="false" 
    android:focusableInTouchMode="true"> 


    </EditText> 

    <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="130dp" 
     android:id="@+id/textView2" 
     android:gravity="right"/> 

    <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="70dp" 
     android:id="@+id/textView3" 
     android:gravity="right"/> 
    </LinearLayout> 
+1

http://vikaskanani.wordpress.com/2011/07/27/android-focusable-edittext-inside-listview/ – 2012-08-09 09:08:24

+0

如果我在editText字段中更改android:focusable = false,那麼可點擊是正常工作,但我不能能夠修改edittext值,你不能鍵入它當'android:focusable = false'發現你沒有谷歌搜索http://stackoverflow.com/questions/2679948/focusable-edittext-inside-listview/4901683#4901683 :) – jenuine 2012-08-09 09:09:56

+0

好的檢查這也http://www.lalit3686.blogspot.in/2012/06/today-i-am-going-to-show-how-to-deal.html – 2012-08-10 12:48:38

回答

0

我覺得你有是你的EditText字段被重寫行選擇的情況。如果你發佈了代碼,那麼它就能更好地瞭解問題所在。

您的EditText是否填充行?如果確實如此,則該字段是被點擊而不是該行的那個字段。嘗試使EditText字段變小,然後您應該能夠在EditText字段外單擊,這將確認這是您的問題。

UPDATE 當您單擊EditText字段時,設備會假定您要編輯此文本。當你點擊其他文本字段,你點擊被解僱?你真的需要列表項中的EditText字段嗎?

+0

現在我更新了我們的代碼 – USER5762 2012-08-09 09:55:27

+0

你有沒有R.layout.list_ticket的代碼? – 2012-08-09 11:34:01

+0

現在更新了list_ticket.xml源代碼。 – USER5762 2012-08-10 05:35:26

相關問題