2016-02-05 65 views
0

我的ListView包含4 EditTextListView中的第一个EditText自动请求焦点

每次在用户类型或点击一个TextView(未在第一列表中的一个):

  • 第一TextView获得焦点

  • 的点击TextView或其中的TextView用户输入焦点

有时这个周期重复2或3次。

这是onFocusChange方法的堆栈跟踪:

at it.softecspa.workflowmanager.views.IntegerNumber_Type.onFocusChange(IntegerNumber_Type.java:308) 
    at android.view.View.onFocusChanged(View.java:5592) 
    at android.widget.TextView.onFocusChanged(TextView.java:8855) 
    at android.widget.EditText.onFocusChanged(EditText.java:182) 
    at android.view.View.clearFocusInternal(View.java:5475) 
    at android.view.View.unFocus(View.java:5508) 
    at android.view.ViewGroup.unFocus(ViewGroup.java:982) 
    at android.view.ViewGroup.unFocus(ViewGroup.java:982) 
    at android.view.ViewGroup.requestChildFocus(ViewGroup.java:672) 
    at android.view.ViewGroup.requestChildFocus(ViewGroup.java:678) 
    at android.view.ViewGroup.requestChildFocus(ViewGroup.java:678) 
    at android.view.View.handleFocusGainInternal(View.java:5340) 
    at android.view.View.requestFocusNoSearch(View.java:8080) 
    at android.view.View.requestFocus(View.java:8059) 
    at android.view.View.requestFocus(View.java:8026) 
    at android.view.View.requestFocus(View.java:8005) 
    at android.widget.ListView.layoutChildren(ListView.java:1766) 
    at android.widget.AbsListView.onLayout(AbsListView.java:2632) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1865) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1865) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102) 
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956) 
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1865) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
    at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
    at android.view.View.layout(View.java:16550) 
    at android.view.ViewGroup.layout(ViewGroup.java:5303) 
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2308) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2021) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:590) 
    at android.view.Choreographer.doFrame(Choreographer.java:560) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:5832) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
+0

getWindow()setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN );? –

+0

@quicklearner它不工作是什么这行应该做的 – user2468425

+0

它不打开软键盘,直到你在edittext上触摸 –

回答

0

我想我需要看到更多的代码(XML和启动您的列表视图代码)。同样,我在保持观点重点方面遇到了问题。 下面是一个例子正常工作,如果你需要保持重心在一个EditText尤其不要holder.et1.requestFocus();

我希望这有助于不使用OnFocusChange()

public class MainActivity extends AppCompatActivity { 

MyAdapter.ViewHolder holder; 
MyAdapter adapt; 
List<String> dataArray; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    populateList(); 
} 
private void populateList() { 
    dataArray = new ArrayList<String>(); 

    ListView listView = (ListView) findViewById(android.R.id.list); 

    dataArray.add("Item 1"); 
    dataArray.add("Item 2"); 
    dataArray.add("Item 3"); 
    dataArray.add("Item 4"); 

    adapt = new MyAdapter(this, R.layout.list_rows, dataArray); 

    listView.setAdapter(adapt); 

} 

private class MyAdapter extends ArrayAdapter<String> { 

    Context context; 
    List<String> itemList = new ArrayList<String>(); 
    int layoutResourceId; 

    public MyAdapter(Context context, int layoutResourceId, 
        List<String> objects) { 
     super(context, layoutResourceId, objects); 
     this.layoutResourceId = layoutResourceId; 
     this.itemList = objects; 
     this.context = context; 
    } 

    @Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     holder = null; 

     if (convertView == null) { 

      //inflate layout 
      convertView = inflater.inflate(R.layout.list_rows, parent, false); 

      //create view holder 
      holder = new ViewHolder(); 

      //find views 
      holder.et1 = (EditText) convertView.findViewById(R.id.et_1); 
      holder.et2 = (EditText) convertView.findViewById(R.id.et_2); 
      holder.et3 = (EditText) convertView.findViewById(R.id.et_3); 
      holder.et4 = (EditText) convertView.findViewById(R.id.et_4); 

      //attach the views to the holder 
      convertView.setTag(holder); 


     } else { 
      //return the views if the converter is not null 
      holder = (ViewHolder) convertView.getTag(); 

     } 

     return convertView; 
    } 

    class ViewHolder { 
     EditText et1; 
     EditText et2; 
     EditText et3; 
     EditText et4; 
    } 

} 

而且,如果不是我会等待你的代码(;